使用Apache POI更改excel中的十进制和千位分隔符

时间:2011-10-19 09:49:19

标签: java excel apache-poi

有没有人知道如果使用apache-poi库你可以更改Microsoft Excel的小数和千位分隔符?

我需要从Web应用程序中导出excel一些数据,并根据用户的某些设置格式化数字。因此,在导出数据时,数字应该与应用程序页面中的数字完全相同。

由于

3 个答案:

答案 0 :(得分:4)

您需要以这种方式设置CellStyle dataFormat(如果您使用整数并且需要千位分隔符)

cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("#,##0")); 
cell.setCellStyle(cellStyle);

我认为你需要这样的东西:(我没试过,所以也许你需要稍微修改一下)#,##0.00 请注意:使用逗号非常重要,而不是点。如果您的语言环境设置正确,您将看到一个点。

答案 1 :(得分:1)

Excel中的格式化通过工具>进行控制。选项>国际对话框,存储在本地首选项中,而不是存储在文件中。所以你无法通过POI来控制它。

我能想到的唯一解决方案是提供文字而不是数字。但它会阻止用户在Excel中进行任何计算。

答案 2 :(得分:0)

只有格式。这意味着此格式是我用于格式化数字的格式。逗号是一个符号,仅等于千分之一,而点是十进制的一部分。您可以使用“#,## 0.00”或“#,## 0”不要紧,因为Microsoft Excel具有适用于应用程序而非文件的分隔符的本地设置,您无法通过API进行覆盖。 请记住,工作表具有预定义的单元格样式。单元格仅引用样式。如果更改单元格,则将所有此类单元格都更改。

我对单元格格式有相同的问题。我想我尝试在XSSFWorkbook上使用方法“ setVBAProject”。

https://social.technet.microsoft.com/Forums/office/en-US/eaa4c7f6-197a-4b33-bc5f-20896e5a7e3a/workbook-or-worksheet-specific-decimal-separator?forum=excel