读取Excelx中的红宝石时间值

问题描述 投票:2回答:3

我正在使用'roo'gem,以读取和解析xlsx文件。该文件包含一个start_time,它的用户输入值可以为06:00 AM的格式。上传文件后,我将参数转换为1899年12月30日星期六或“ 1899-12-30”。我想知道是否可以通过任何方式获取文件中提到的用户的实际时间格式,还是可以将可用参数转换为实际的文件单元格值。

或者xlsx文件单元格是否有任何格式或验证。

提前感谢。

ruby xlsx time-format
3个回答
1
投票

此问题得到解决,因为我将excel单元格格式更改为Text。


1
投票

我发现Ruby中的xlsx读取库(包括Roo)弄错了日期。这是不幸的但可以理解的,因为excel同时使用“类型” xml属性和格式规则,这些属性充其量是尴尬的,而用户生成的则是最糟糕的。

仍然,通过努力,即使不是在所有时间,也可能获得最正确的结果,这就是我写simple_xml_reader的原因。如果可能的话,使用它,否则您的解决方案将是最可靠的,因为根据我的经验,尝试使用以前存在的Ruby gems,即使有的话,它们也只能在很短的时间内解决问题。


0
投票

仅当您要一次转换/解析excel文件时,才可以将excel单元格格式更改为文本。如果您想要永久解决方案怎么办?你去了-

xlsx.excelx_value(row,col)

这将为您提供时间值,表示日期,即

0.25 = 06:00 AM 0.50 = 12:00 PM 0.75 = 18:00 PM依此类推

您只需要将其转换为分钟,即0.25 * 1440 = 360分钟= 06:00

您甚至可以将其转换为秒0.25 * 1440 * 60 * 60 = 21600秒然后

Time.at(seconds).strftime("%H:%M:%S")
© www.soinside.com 2019 - 2024. All rights reserved.