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

如何在Apache POI XSSF eventmodel中检查date是否使用1904窗口

栾景胜
2023-03-14

我正在编写一个用Apache POI eventmodel(SAX/XSSF)导入xlsx文件的程序。我快搞定了,但我搞不到正确的日期。

我正在分析具有日期值的单元格

<c r="D1" s="1">
    <v>41319.558333333334</v>
</c>

我正在使用org.apache.poi.ss.usermodel.dateutil类获取日期:

DateUtil.getJavaCalendar(doble date, bool use1904windowing);

我应该传递什么作为use1904windowing来获得正确的日期?我暂时使用false,因为这样可以为我的测试工作簿提供正确的日期,但我知道应该从某个地方读取该值。

有一个二进制html" target="_blank">xls格式的记录dateWindow1904record,我使用HSSF读取它。它在XSSF中的对应物是什么?还是应该始终使用false

编辑:@RGettMan的答案指向了我的解决方案,但它并不完整。在事件模型中,您没有xssfWorkbook对象,并且不能只使用它的getCTWorkbook()。

相反,您可以直接从InputStream创建CTWorkbook:

OPCPackage pkg = OPCPackage.open(filename);
XSSFReader r = new XSSFReader( pkg );
InputStream workbookXml = r.getWorkbookData();
CTWorkbook ctWorkbook = CTWorkbook.Factory.parse(workbookXml);
boolean isDate1904 = ctWorkbook.getWorkbookPr().getDate1904();

共有1个答案

乌骏
2023-03-14

编辑部分中描述的代码可以编译,但在POI3.9中始终返回空CTWorkbookPr。下面的代码实际解析工作簿前缀:

OPCPackage pkg = OPCPackage.open(filename);
XSSFReader r = new XSSFReader( pkg );
InputStream workbookXml = r.getWorkbookData();
WorkbookDocument doc = WorkbookDocument.Factory.parse(workbookXml);
CTWorkbook wb = doc.getWorkbook();
CTWorkbookPr prefix = wb.getWorkbookPr();
boolean isDate1904 = prefix.getDate1904();
pkg.close();
 类似资料:
  • 问题内容: 我想知道是否正在使用我的GPU。在此过程中,可以检测是否有来自GPU的任何活动,但是我想要在脚本中编写一些东西。 有办法吗? 问题答案: 这将起作用: 这告诉我GPU正在被使用。

  • 我想知道Pytork是否正在使用我的GPU。使用可以检测在这个过程中是否有来自GPU的任何活动,但是我想要用脚本编写一些东西。 有没有办法做到这一点?

  • 问题内容: 我的游标带有查询语句,如下所示: 我想检查组件的存在:名称并返回python变量。我怎么做? 问题答案: 由于s是唯一的,因此与我最初使用的建议相比,我真的更喜欢您(OP的)使用方法或Alex Martelli的使用方法。 将结果(通常是多行数据)包装在一个列表中。由于s是唯一的,因此返回列表中只有一个元组的列表(例如,或为空列表。如果您想知道,则使用要求您浏览列表和元组以到达。 在这

  • 我偶尔收到以下信息: 这发生在具有表的页面中,其中的行延伸到视点之后。 我用来在表中选择随机行的方法 是否有一种方法来检查是否有元素在#Focus之后?

  • 问题内容: 我正在使用SQL Server,但没有足够的数据集来测试查询的性能。 我想分析查询,看看索引是否被利用。我该如何检查 问题答案: 在SQL Management Studio中,只需键入查询,然后按Control-L(显示查询执行计划)。在那里,您将能够查看是否正在使用任何索引。“表扫描”表示未使用索引。“索引扫描”是指使用索引。

  • 我在pygame中运行一个游戏,发现了一个漏洞。按照我的编码方式,如果鼠标出了窗口,游戏开始循环。当你得到,它将返回上次在窗口中检测到鼠标的值,但从其他方面看,没有鼠标离开窗口的指示。那么,有没有办法检查鼠标是否已经停止在pygame窗口上悬停,并离开了它?