【发布时间】:2017-09-12 15:59:44
【问题描述】:
问题非常具体:使用 Apache POI,我想创建单元格(完成),为其分配数字格式(完成),并设置格式的语言环境(卡在这里)。
代码如下所示:
SXSSFWorkbook workbook = new SXSSFWorkbook(100);
Sheet sheet = workbook.createSheet();
Row row = sheet.createRow(1);
Cell cell = row.createCell(0);
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(8); //currency with thousands separator and two decimal places after period
cell.setCellValue(123456.78);
//??? how to set custom locale for the cell's number format?
我试图用自定义语言环境解决的问题是自定义千位分隔符字符(法语的不间断空格对我来说是可以的)。
XLSX 工作簿允许这样的自定义(更新:我的意思是为每个单元格设置格式区域设置),这可以通过 MS Office 和 OpenOffice 实现。我想在代码中做同样的事情。
(Apache POI 3.12)
【问题讨论】:
-
当我使用 Apache-poi 时,我不必处理语言环境,因为本地化的格式细节(例如,逗号或点)由显示数据的 Excel 确定,因此它总是正确的实际用户。这还不够吗?
-
“XLSX 工作簿允许这样的定制”:不,它没有。对于货币数字格式,只能本地化货币符号,但不能本地化小数分隔符。这来自 Windows 系统区域设置。千位分隔符也默认为 Windows 系统区域设置。但这可以使用格式字符串进行设置。所以格式字符串可以是
"#\\ ##0.00\\ [$€-40C];[RED]\\-#\\ ##0.00\\ [$€-40C]"。这是你想要的吗?但这与可用于 Libreoffice OpenDocument 电子表格格式的本地化货币格式不同。 -
@ZsoltV 不幸的是,这还不够。我有客户要求说“空格作为分隔符”,但我无法让客户更改计算机的区域设置
-
@AxelRichter XLSX 工作簿允许为特定单元格设置区域设置。不过,Apache POI 似乎没有 API。但是像“# ### ### ###”这样的格式对我有用。如果您将其发布为答案,我会接受它
-
"XLSX 工作簿允许为特定单元格设置区域设置。"你能告诉我怎么做吗?
标签: java excel apache-poi locale