首页 > 解决方案 > 使用 Apache POI 创建的 Excel 将点作为小数分隔符,表示大于 1000 的值,逗号表示较小的值

问题描述

我在使用以下方法生成 Excel 文件时遇到了一些问题org.apache.poi.ss.usermodel utils: 1000 以上的值有点 (.) 作为小数分隔符,1000 以下的值有逗号 (,) 作为小数分隔符。

我尝试了很多不同的方法将 BigDecimal 值放入“单元格”,但每次结果都是相同的,无论是否设置单元格类型CELL_TYPE_NUMERICCELL_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++;
        }
}

标签: javaexcelapache-poicellhssfworkbook

解决方案


推荐阅读