我有一个应用程序,生成一个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);
}
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.我正在研究一个Linux机器,但输出是供Windows机器人使用的,所以它必须是一个xlsx.工作簿按预期生成,当我在LibreOffice中打开它时,它看起来完全符合我的预期.然后我将它发送给我的同事,当他们在Excel中打开它时,大多数单元格格式化都消失了.具有货币格式的单元格只是原始数字.格式化为百分比的单元格(大多数)只是原始数字.
我有什么想法可能做错了吗?谢谢!
其中一种细胞样式:
XSSFCellStyle percent = wb.createCellStyle();
percent.setDataFormat(wb.createDataFormat().getFormat("0.0%"));
Run Code Online (Sandbox Code Playgroud)
稍后用于此处:
header.createCell(cn).setCellValue("%");
sheet.setDefaultColumnStyle(cn, percent);
Run Code Online (Sandbox Code Playgroud)
有一堆这些,但我怀疑我做错了,一个是同样的问题,所有这些,所以我只提出一个而不是200行.;)
更新:在rgettman的建议下,我尝试在创建后为每个单独的单元格设置样式.这有效.谢谢rgettman!
我在XSSFSheet上创建一个自动过滤器,如下所示:
sheet.setAutoFilter(new CellRangeAddress(1, sheet.getLastRowNum() + 1,
0, 14));
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我也希望它默认按特定列上的升序值排序(第1列从零开始索引).有谁知道怎么做?
谢谢!山姆