编辑:为避免混淆,这是我原来问题的(再次)改进版本:
问题 我如何才能以 Microsoft Excel 显示单元格的方式读出单元格的字符串表示形式,而不知道各自对格式化设置进行硬编码(但例如使用单元格自己的格式化设置来格式化输出)。
ANSWER SO FAR 如果您使用的是美国版的 excel,这将没有问题,对于所有其他版本,Apache POI 将返回与美国版 excel 的显示方式相同的字符串,并且在 Apache 中没有内置方式POI 来改变这一点。我可以确认“工作”的唯一方法是 - 正如 Gagravarr 建议的那样 - 将我的 Mac 上的语言切换为 US/EN。然后 Apache POI 和 Excel 将提供相同的结果。这是一种逆解决方案。
问题是:单元格的显示方式01.12.13
与德文版 excel 中的一样,但由于它的格式为日期
HSSFCell cell = (HSSFCell) cellIter.next();
HSSFDataFormatter formatter=new HSSFDataFormatter();
String val=formatter.formatCellValue(cell)
给我一个 val 21/01/13
。
原来的问题是:
我有一个 xlsx 文件,其中包含在 Excel 中显示的日期字段,例如
01.12.13
使用单元格的格式设置TT.MM.JJ
如果我用 apache poi 读取相同的文件,获取单元格和格式 à la
HSSFCell cell = (HSSFCell) cellIter.next();
HSSFDataFormatter formatter=new HSSFDataFormatter();
String val=formatter.formatCellValue(cell)
(cellIter
当然是一个有效的迭代器,简化的例子)
我val
原来是21/01/13
。据我了解,HSFDataFormatter 的方法 formatCellValue() 应该返回一个使用单元格格式设置格式化的值的字符串。
有人知道我如何让 val 包含与 Excel 中相同的格式吗?
我很感激任何帮助!谢谢!