4

我正在使用 Apache POI HSSF 从我的 Java Web 应用程序生成 Excel 电子表格。

我需要一个格式为“数字”的单元格,带有 2 个小数点。(我在 Java 中的值是 BigDecimals,但我可以将它们转换为双精度数,没问题。)我正在使用以下代码:

CellStyle numericStyle = wb.createCellStyle();
numericStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00"));

// output in this new style...
row.createCell(cellnum).setCellValue(((BigDecimal)value).doubleValue());
row.getCell(cellnum).setCellStyle(numericStyle);

问题是,即使这样有效,Excel 仍将我的单元格显示为General。它们需要显示为Number。因此,例如,0 显示为 0,但它应该是 0.00,如果格式正确 ( Number ) 就会发生这种情况。

我看到它生成为常规,因为我可以右键单击一个单元格,然后选择“格式化单元格”来查看它现在是什么。它需要由 Apache POI HSSF 设置为“数字”。

4

2 回答 2

0

查看Apache POI API看起来您应该能够指定单元格的类型。

...
Cell cell = row.createCell(...);
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
...
于 2013-08-07T15:37:23.557 回答
0

我假设您还没有找到问题的答案。

显示带两位小数的数字的一种方法是设置单元格样式。这允许您自定义小数位数和小数分隔符等。

protected CellStyle getCellStyle(HSSFWorkbook workbook) {
    CellStyle cellStyle = workbook.createCellStyle();
    cellStyle.setDataFormat(
        workbook.getCreationHelper().createDataFormat().getFormat("#,##0.00"));
        return cellStyle;
}

稍后,当您填写工作簿时,将此 cellStyle 应用于所需的单元格:

CellStyle cellStyle = getCellStyle();
//...
// create your cell
cell.setCellStyle(cellStyle);
// set the value

它不会在 Excel 中显示为数字类型。它显示为自定义类型。但在视觉上它应该是相同的,或者至少足够接近。

于 2016-10-19T14:01:04.113 回答