我正在使用“roo”gem 来读取和解析 xlsx 文件。该文件包含一个 start_time,它可能具有格式为 06:00 AM 的用户输入值。上传文件后,我将参数转换为 Sat、1899 年 12 月 30 日或“1899-12-30”。我想知道是否可以通过任何方式获取文件中提到的用户的实际时间格式,或者我们可以将可用参数转换为实际的文件单元格值。
或者 xlsx 文件单元格是否有任何格式或验证。
提前致谢。
我正在使用“roo”gem 来读取和解析 xlsx 文件。该文件包含一个 start_time,它可能具有格式为 06:00 AM 的用户输入值。上传文件后,我将参数转换为 Sat、1899 年 12 月 30 日或“1899-12-30”。我想知道是否可以通过任何方式获取文件中提到的用户的实际时间格式,或者我们可以将可用参数转换为实际的文件单元格值。
或者 xlsx 文件单元格是否有任何格式或验证。
提前致谢。
这得到了解决,因为我将 excel 单元格格式更改为文本。
我发现 Ruby 中的 xlsx 阅读库,包括 Roo,日期错误。这是不幸的,但可以理解,因为 excel 使用'type' xml 属性和格式规则,这在最好的情况下是尴尬的,在最坏的情况下是用户生成的。
尽管如此,通过努力,即使不是所有时间,也有可能大部分时间都是正确的,这就是我编写simple_xml_reader的原因。如果可能,请使用它,否则您的解决方案将是最可靠的,因为根据我尝试使用先前存在的 Ruby gem 的经验,他们只会在一小部分时间内正确处理,如果有的话。
仅当您想转换/解析 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")