Java 如何使用ApachePOI删除excel中的单元格内容
我想删除单元格内容,但保留其样式,但它总是删除样式和内容。这是我的密码:Java 如何使用ApachePOI删除excel中的单元格内容,java,excel,apache-poi,Java,Excel,Apache Poi,我想删除单元格内容,但保留其样式,但它总是删除样式和内容。这是我的密码: private static void RefreshReport(String sheetName, String resultColumn) { try { InputStream inp = new FileInputStream(getExcelFile()); Workbook wb = WorkbookFactory.create(inp);
private static void RefreshReport(String sheetName, String resultColumn) {
try {
InputStream inp = new FileInputStream(getExcelFile());
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheet(sheetName);
int colResult = getColumnResult(sheet, resultColumn);
int rowStart = getRowResult(sheet, resultColumn);
int rowEnd = Math.max(20, sheet.getLastRowNum());
for (int rowNum = rowStart; rowNum < rowEnd; rowNum++) {
Row r = sheet.getRow(rowNum);
if (r != null) {
Cell cell = r.createCell(colResult);
if (cell.getCellType() != Cell.CELL_TYPE_BLANK) {
CellStyle cs = wb.createCellStyle();
cs = cell.getCellStyle();
r.removeCell(cell);
cell = r.createCell(colResult);
cell.setCellStyle(cs);
}
}
}
FileOutputStream fileOut = new FileOutputStream(getExcelFile());
wb.write(fileOut);
fileOut.close();
inp.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private static void RefreshReport(字符串sheetName、字符串resultColumn){
试一试{
InputStream inp=新文件InputStream(getExcelFile());
工作簿wb=WorkbookFactory.create(inp);
Sheet Sheet=wb.getSheet(sheetName);
int colResult=getColumnResult(工作表,结果列);
int rowStart=getRowResult(工作表,结果列);
int rowEnd=Math.max(20,sheet.getLastRowNum());
对于(int-rowNum=rowStart;rowNum
任何帮助都很好。方法不起作用的原因是,如果行
r
不是null
,您总是调用createCell
。这将覆盖任何已存在的单元格
,包括内容和样式
您需要做的是调用getCell
。这将检索该列索引处的单元格
,前提是它存在;如果它不存在,则检索null
。然后,如果它存在,您可以按您正在执行的操作处理单元格
if (r != null) {
Cell cell = r.getCell(colResult);
if (cell != null && cell.getCellType() != CellType.BLANK) {
// rest of your code here
除了删除/重新创建方法之外,您还可以将单元格类型设置为空白
。这会将内容设置为空白,但也会保留该单元格上当前的单元格样式。无需删除单元格并重新创建它
if (cell.getCellType() != CellType.BLANK) {
cell.setCellType(CellType.BLANK);
}
那你有什么问题。。。请分享您想要的,但此代码无法执行的内容…@Sankumarsingh我想删除单元格内容,但保留其样式。我只是想知道为什么您不设置单元格值而不是删除它?@zawhtut set Cell value将删除单元格样式,这听起来不太正确,但如果为真:拉出样式,设置内容,然后从临时存储样式的位置再次设置样式。