当前位置: 首页 > 知识库问答 >
问题:

apache poi语言版本导致日期格式误解

宋烨烁
2023-03-14

编辑:为了避免混淆,这里是我原来问题的(再次)改进版本:

问题如何像Microsoft Excel显示单元格的方式一样读出单元格的字符串表示形式,而不知道各自的硬编码格式设置(但例如使用单元格自己的格式设置来格式化输出)。

到目前为止,如果您使用的是美国版本的excel,那么这不会有问题,因为所有其他版本的Apache POI将返回与美国版本的excel显示方式相同的字符串,并且Apache POI中没有内置的方法来更改这一点。我能确认的唯一方法是“工作”是——正如加格拉瓦尔所建议的那样——将我Mac电脑上的语言切换为US/EN。然后Apache POI和Excel将提供相同的结果。这是一种逆解。

问题是:在德语版本的excel中,单元格显示为01.12.13,但由于它的格式为Date

HSSFCell cell = (HSSFCell) cellIter.next();
HSSFDataFormatter formatter=new HSSFDataFormatter();
String val=formatter.formatCellValue(cell)

给我一个值为21/01/13。

原来的问题是:

我有一个包含日期字段的xlsx文件,这些字段在Excel中显示,就像

01.12.13使用单元格的格式设置TT. MM. JJ

如果我用apache poi读取相同的文件,获取单元格和格式

HSSFCell cell = (HSSFCell) cellIter.next();
HSSFDataFormatter formatter=new HSSFDataFormatter();
String val=formatter.formatCellValue(cell)

(当然,cellIter是一个有效的迭代器,这是一个简化的示例

我的val结果是21/01/13。据我所知,HSFDataFormatter的方法formatCellValue()应该返回一个用单元格的格式设置格式化的值字符串。

有人知道如何让val包含与Excel中相同的格式吗?

我感谢任何帮助!谢谢!

共有1个答案

欧阳乐生
2023-03-14

您可以按以下方式自定义日期格式:

HSSFCell cell = (HSSFCell) cellIter.next();
SimpleDateFormat DtFormat = new SimpleDateFormat("dd.MM.YY");
Date date=cell.getDateCellValue();
System.out.println(DtFormat.format(date).toString());

这将打印值为21.01.13。

 类似资料:
  • 问题内容: 我有一个关于Spring + Thymeleaf日期格式的问题。我有一个简单的实体与领域。我想以表单形式从用户那里获取此日期并将其保存到MySQL数据库。我收到这样的错误: 无法将类型java.lang.String的属性值转换为属性日期所需的类型java.time.LocalDate;嵌套异常是org.springframework.core.convert.ConversionFa

  • 问题内容: 我在解析我的代码中的平面文件后,试图转换作为文件存在于平面文件中的String 值。 我已经写了代码来做到这一点,但是当我格式化日期时,它总是给我一个指定日期超过1天的日期,有时它会加5:30。 以下是该代码: 上面的输出是 您能告诉我这里是什么问题吗?我在课堂上使用的模式有问题吗?还是代码有问题?我已经为此挠了很久。 问题答案: 您的系统时区不同。输出显示IST-或印度标准时间,与P

  • 问题内容: 我是Java和Android开发的新手,所以这可能是一个愚蠢的问题,但是我已经搜寻了好几天,却找不到解决方案: 我尝试根据用户的语言环境输出a 。 在StackOverflow上搜索使我想到了这一点: 输出: 在我的法语本地电话上。差不多了 我如何也输出 小时,分钟和秒部分 的,使用用户的语言环境?我一直在寻找android文档,但找不到任何东西。 非常感谢。 问题答案: 用 参考:h

  • 我在我的应用程序中使用日期格式化程序来显示一些日期。但我希望这个日期以阿拉伯语显示。所以我试图像这样改变格式化程序的区域设置: 但它不起作用。。 如果我改成这样: 会工作正常...但我希望日期显示在阿拉伯语... 如何做到这一点?我希望日期是例如١١ يناير ٢٠١٨..怎么办?

  • 设定年月日的排列顺序。

  • 问题内容: 我有来自服务器的日期,格式为“ 2013-01-20T16:48:43”,我的应用程序同时支持阿拉伯语和英语语言环境。但是,当我将语言环境更改为阿拉伯语时,日期无法解析,因此无法解析。到现在为止我写的是 问题答案: 不要将您的日期解析为阿拉伯语,除了按如下方式尝试通过仅设置“英语区域设置”之外,它还会给您带来错误提示。