我正在尝试使用 Roo gem 从 Excel 电子表格中读取 DateTime 对象。我能够成功读取格式为 *3/14/15 类型的日期的单元格(星号表示格式基于我的区域日期和时间设置)。当我在cell_type
导入这些单元格时检查它们的类型时,类型是[:numeric_or_formula, "mm-dd-yy"]
. 我希望这些具有 的类型[:datetime]
,但我仍然能够从cell.formatted_value
.
当我尝试读取格式为日期类型为 3/14/15(即格式不基于区域日期和时间设置)或 3/14/15 13:30 的单元格时,我知道cell_type
是[:numeric_or_formula, "m/d/yy;@"]
. 当我打电话时,cell.formatted_value
我得到"0/d/yy;@"
.
有什么方法可以格式化我的 excel 单元格,以便 Roo 将它们读取为 type :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