我在使用以下方法生成 Excel 文件时遇到了一些问题org.apache.poi.ss.usermodel utils
: 1000 以上的值有点 (.) 作为小数分隔符,1000 以下的值有逗号 (,) 作为小数分隔符。
我尝试了很多不同的方法将 BigDecimal 值放入“单元格”,但每次结果都是相同的,无论是否设置单元格类型CELL_TYPE_NUMERIC
或CELL_TYPE_STRING
执行以下操作:
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(workbook.getCreationHelper().createDataFormat().getFormat("###0,00"));
cell.setCellStyle(cellStyle);
我设法通过统一小数分隔符来解决这个问题 - 我正在获取这个 BigDecimal 的字符串值,将所有点替换为逗号并完成!但是当打开 Excel 时,所有字段都被标记,并且有一条警告说这个单元格中的值被格式化为文本。我可以将它设置为一个数字,然后对它们进行不同的数学运算。但我想生成没有警告的生成 Excel 文件(因此 - 单元格设置为数字以对它们进行数学运算),BigDecimal
以逗号作为小数分隔符的值。
我按如下方式创建工作表和单元格:
Workbook workbook = new SXSSFWorkbook();
Sheet sheet = workbook.createSheet("mySheet);
int rowNum = 1;
List<MyRecord> records = (...);
for (MyRecord record : records) {
Row row = sheet.createRow(rowNum++);
int cellNum = 0;
for (String attribute : attributeList) {
String cellData = cellData(record, attribute);
if(cellData != null) {
Cell cell = row.createCell(cellNum);
cell.setCellValue(cellData);
}
cellNum++;
}
}