gpt4 book ai didi

java - 使用apache poi修改现有的xlsx表而不丢失样式/格式

转载 作者:行者123 更新时间:2023-12-02 11:42:25 24 4
gpt4 key购买 nike

我需要将数据写入现有模板并存储格式,但样式(字体、颜色、边框)消失。我做了什么?加载表格并在其中获取工作表:

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代码中重新创建),格式会保存,但它们预初始化的情况非常不同。有时数据初始化它,有时不初始化,有时具有特定建立样式的单元格被预初始化。

附:对不起我的英语

最佳答案

据我了解,无论添加新行还是修改现有行,您都希望保护单元格样式。为了实现这两者,您可以获取每个单元格或整行的样式并设置新的或修改的样式。

Row dataRow = xlsxSheet.getRow(rowIndex);
CellStyle currentRowStyle = dataRow .getRowStyle()
Cell tmp = dataRow.getCell(colIndex);
CellStyle currentStyle = tmp.getCellStyle();

如果您想添加新行,您可以使用此方法获取最后一行号,而不是检查 null 值:

int rowCount = sheet.getLastRowNum();

关于java - 使用apache poi修改现有的xlsx表而不丢失样式/格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48457714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com