【发布时间】:2015-08-20 02:48:17
【问题描述】:
我有一个应用程序可以生成 XSSFWorkbook 并用预算数据填充它。完成后,它会写出一个文件:
try {
FileOutputStream fileOut = new FileOutputStream("/path/to/my/file/myfilename.xlsx");
wb.write(fileOut);
fileOut.close();
} catch (IOException ioe) {
logger.error("Error writing spreadsheet", ioe);
}
到目前为止一切顺利。我正在开发一个 Linux 机器,但输出是为 Windows 机器上的人准备的,所以它必须是 xlsx。工作簿按预期生成,当我在 LibreOffice 中打开它时,它看起来完全符合我的预期。然后我把它发给我的同事,当他们在 Excel 中打开它时,大部分单元格格式都消失了。具有货币格式的单元格只是原始数字。格式化为百分比的单元格(大多数)只是原始数字。
任何想法我可能做错了什么?谢谢!
其中一种单元格样式:
XSSFCellStyle percent = wb.createCellStyle();
percent.setDataFormat(wb.createDataFormat().getFormat("0.0%"));
后来在这里使用:
header.createCell(cn).setCellValue("%");
sheet.setDefaultColumnStyle(cn, percent);
其中有很多,但我怀疑我对其中一个做错的地方都是同一个问题,所以我只介绍一个而不是 200 行。 ;)
更新:根据 rgettman 的建议,我尝试在创建后将样式设置为每个单独的单元格。这行得通。谢谢雷格曼!
【问题讨论】:
-
请显示应用 Excel 中未显示的单元格格式的代码。
-
原帖添加格式代码。
-
您使用的是什么版本的 Apache POI?如果它不是最新的,您是否尝试过升级?
标签: java excel apache-poi