我有一个excel文件,其中有一个时间戳列,填充值为5/31/2011 5:49:44 PM。我正在使用POI事件模型读取此excel文件。(实施方式与中的说明相同http://poi.apache.org/spreadsheet/how-to.html#sxssf-“XSSF和SAX(事件API)”)上面的时间戳值被读取为40694.74287037037,我不知道为什么。我无法将此值格式化回日期时间格式。
如何解决此问题?
我使用了@Gagravarr建议的DateUtil.getJavaDate(双)解决方案。我只是保留了一个额外的检查,以防有人以字符串格式保存日期,而POI读取相同的日期。它工作得很完美。谢谢大家的宝贵建议。
这完全是意料之中的事。Microsoft Excel文件格式将自1900/01/01或1904/01/01以来的所有日期时间存储为小数日期,具体取决于文件中设置的标志(1904日期窗口标志)。因此,当您重新读取原始值时,1900年1月1日下午6点应返回为1.75
。
如果您使用的是UserModel代码,那么有很多帮助程序可以将其转换回日期。在事件模型中,您必须自己发现(通过检查格式),然后自己调用转换。
您需要的类是DateUtil,尤其是像DateUtil这样的方法。getJavaDate(双精度)
ApachePOI提供了许多这样做的示例,我建议您查看类似XLS2CSVmra的内容以获得指导。
此外,如果你想要的只是时间,而不考虑一天,取非整数余数,这就是你一天中时间的一小部分。对于当前小时(向下舍入),您将执行以下操作:
double date = cell.getNumericCellValue(); // 1.76
double time = date - ((int)date);
int hours = time * 24; // 18
我有一个巨大的excel文件,其中包含大量列,如下所示:- 当我打印excel中的所有值时,我的代码生成的输出是:- 所以,如果我们看看上面的输出,我们可以注意到我留下空白值的单元格没有被POI库拾取。有没有一种方法可以让这些值为空?还是一种识别所呈现的值跳过空白单元格的方法? 请注意:我使用的不是usermodel(org.apache.poi.ss.usermodel),而是一个事件API来处
问题内容: 我正在尝试从文件中读取一些数字(双精度),并将它们存储在ArrayList和一个数组中(是,我需要两个),其代码如下: } 我尝试读取的文件是: 但是我的代码无法正常工作,hasNextDouble()函数什么也找不到,我在做什么错呢? 编辑:好的,所以我编辑了一下源代码(从Object [] []更改为Double [] []),并将插入值插入到ArrayList中之后,将插入值添加
假设我有一个时间戳值。 编辑 现在我正在使用获取上述时间的毫秒值; 根据Java文档,getTime()方法的定义是
我想知道是否可以通过使用Flink的摄取时间模式获得记录的时间戳。考虑以下flink代码示例(https://github.com/apache/flink/blob/master/flink-examples/flink-examples-streaming/src/main/scala/org/apache/flink/streaming/scala/examples/join/windowj
如何在Java中从键盘读取双变量?我试图解决这个问题,但没有成功。上面说: 线程“main”java中出现异常。util。java上的输入不匹配异常。util。扫描仪。throwFor(Scanner.java:864)访问java。util。扫描仪。下一个(Scanner.java:1485)是java。util。扫描仪。nextDouble(Scanner.java:2413)位于Main。m
我有一个在AWS Lambda上运行的基于微服务的应用程序。其中两个微服务,最关键的,使用事件源/cqrs。 背景:(这也是我整理思想的地方) 我正在使用这个库并将事件存储在DynamoDB中,并将预测存储在AWS S3中。 写入部分的工作方式很有魅力:每个命令调用都从DynamoDB加载聚合的当前状态(通过处理程序运行事件和/或加载缓存的聚合),它根据一些业务逻辑决定接受或拒绝命令,然后使用键条