我正在尝试使用Roo gem从Excel电子表格中读取DateTime对象。我能够成功读取格式为日期的单元格,类型为* 3/14/15(星号表示该格式基于我的区域日期和时间设置)。当我检查导入的这些单元格的cell_type
时,类型为[:numeric_or_formula, "mm-dd-yy"]
。我期望这些有[:datetime]
类型,但我仍然可以从cell.formatted_value
获得mm-dd-yy格式的值。如何通过Roo将excel单元格格式化为cell_type [:datetime]?
当我尝试读取格式为3/14/15类型日期的格式(即格式不基于区域日期和时间设置)或3/14/15 13:30时,我得到cell_type
是[:numeric_or_formula, "m/d/yy;@"]
。当我拨打cell.formatted_value
时,我收到"0/d/yy;@"
。
是否有任何方式来格式化我的Excel单元格,以便他们将被Roo读取为:datetime
类型?如果没有,为什么Roo创建的单元格类型依赖于区域日期和时间设置?
仅供参考,这里的代码我现在有从表格中读取细胞:
xlsx = Roo::Spreadsheet.open(self.file)
raw_key_list = xlsx.sheet('index_upload').row(4)
key_list = raw_key_list[4..raw_key_list.length].compact
xlsx.sheet('index_upload').each_row_streaming(offset: 6, pad_cells: true) do |row|
key_list.each_with_index do |key, idx|
next unless row[idx + 4].try(:cell_value)
if row[idx + 4].cell_type == [:numeric_or_formula, "mm-dd-yy"]
context_lookup.context_value_date = row[idx + 4].formatted_value
end
end
end
我想'在Excel cell_type's仅限于'l'的标签(即文本),'N'为数字(或公式),或'b'表示空白单元格。就Excel而言,日期确实只是以特定方式格式化的数字。 – Skippy