1

我有个问题。我使用的是 Apache POI 3.8,我需要将日期设置为 Excel 单元格。但我不明白 - 如何根据用户区域设置日期。因为美国格式的日期是月/日/年,在俄罗斯语言环境中 - 日/年/月。我正在为我的任务使用下一个代码

CellStyle dateStyle = workbook.createCellStyle();
dateStyle.setDataFormat(dataFormat.getFormat("m/d/yy"));
cell.setCellStyle(dateStyle);

如果有人知道 - 如何根据用户区域设置设置单元格日期值,请回答。笔记。如果我使用“m/d/yy h:mm”,那么我在 Excel 文件中看不到我的日期(我在单元格中只看到“######”字符串)。谢谢你。

4

3 回答 3

3

尝试扩大细胞。有时,如果单元格宽度太短######,则会被视为输出。要获得本地化模式,您可以查看此参考

于 2012-04-19T19:39:12.297 回答
2

Excel 根据打开文档的机器的区域设置显示日期和数字。所以你不需要关心它。

在您的代码中,您使用模式“m/d/yy”。Excel 会自动将其转换为“de_DE”语言环境中的“dd.MM.yyyy”,“en_GB”语言环境中的“dd/MM/yyyy”等等。

您可以测试它更改机器的区域设置(对于 Windows: 控制面板 -> 时钟、语言和区域 -> 语言 -> 更改日期、时间或数字)。正如您将看到的,相同的 Excel 文档在不同的语言环境中会以不同的方式显示。


关于“######”,您可以使用Sheet#autosizeColumn。但要小心,因为正如文档中所述:

“这个过程在大纸张上可能相对较慢,因此通常每列只应在处理结束时调用一次”

于 2017-07-13T14:39:12.147 回答
0

可以在 formatListener 上设置语言环境

MissingRecordAwareHSSFListener listener = new MissingRecordAwareHSSFListener(this);
formatListener = new FormatTrackingHSSFListener(listener, Locale.UK);
于 2016-08-05T10:00:44.277 回答