我需要将数据写入现有模板并在其中存储格式,但样式(字体,颜色,边框)会消失。 我做了什么? 加载表并获取其中的表格:
Workbook xlsxWorkbook = WorkbookFactory.create(new File(filename));
xlsxWorkbook.getSheet(sheetname);
像这样修改:
while (condition) {
Row dataRow = xlsxSheet.getRow(rowIndex);
if (dataRow == null) {
dataRow = xlsxSheet.createRow(rowIndex);
}
rowIndex++;
int colIndex = 0;
for (String colName : colNames) {
Cell tmp = dataRow.getCell(colIndex);
if (tmp == null)
tmp = dataRow.createCell(colIndex);
tmp.setCellValue(value);
colIndex++;
}
}
回写文件:
write(params.getProperty("xlsx-filename"), xlsxSheet.getWorkbook());
我对此了解多少? 之前我使用相同而没有空检查,在这种情况下所有样式都会消失。 现在,如果单元格和行不为空(不在java代码中重新创建),则格式化保存,但预先初始化的情况非常不同。有时候数据会初始化它,有时候不会,有时会预先初始化具有特定风格的单元格。
P.S。抱歉我的英文
答案 0 :(得分:1)
据我所知,无论是添加新行还是修改现有行,您都希望保护单元格样式。为了实现它们,您可以获取每个单元格或完整行的样式并设置新的或修改过的行。
Row dataRow = xlsxSheet.getRow(rowIndex);
CellStyle currentRowStyle = dataRow .getRowStyle()
Cell tmp = dataRow.getCell(colIndex);
CellStyle currentStyle = tmp.getCellStyle();
如果要添加新行,可以使用此行获取最后一个行号,而不是检查null
值:
int rowCount = sheet.getLastRowNum();