我正在嘗試使用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