Apache的POI本地化的日期到Excel单元格(Apache POI localized Dat

2019-10-16 14:56发布

我有个问题。 我使用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文件的日期(我看到仅有细胞“######”字符串)。 谢谢。

Answer 1:

尝试和拓展细胞。 有时,如果单元格的宽度过短######被视为输出。 要获得本地化的模式,你可以看到这个参考



Answer 2:

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

在你的代码使用模式“M / d / YY”。 Excel会自动将其转换为在把“zh_CN”场所等“DD.MM.YYYY”在“de_DE这个”区域,“DD / MM / YYYY”。

您可以测试它改变你的机器的区域( 用于Windows: 控制面板- >时钟,语言和区域- >语言- >更改日期,时间或数量 )。 正如你将看到相同的Excel文档将被用于不同的区域设置不同的显示。


关于“######”,则可以使用表#autosizeColumn 。 但要小心,因为它的文档中描述:

“这个过程可以在大张的速度相对较慢,所以这应该通常只有一次每列调用,在你处理结束”



Answer 3:

语言环境可以在formatListener设置

MissingRecordAwareHSSFListener listener = new MissingRecordAwareHSSFListener(this);
formatListener = new FormatTrackingHSSFListener(listener, Locale.UK);


文章来源: Apache POI localized Date into Excel cell