Roo gemを使用してExcelスプレッドシートからDateTimeオブジェクトを読み込もうとしています。 * 3/14/15タイプの日付としてフォーマットされたセルを正常に読み取ることができました(アスタリスクは、地域の日付と時刻の設定に基づいてフォーマットされていることを示しています)。これらのセルをインポートするときにcell_type
を確認すると、タイプは[:numeric_or_formula, "mm-dd-yy"]
になります。私はこれらのタイプが[:datetime]
であることを期待していますが、まだmm-dd-yyフォーマットの値をcell.formatted_value
から得ることができます。どのようにExcelセルはRooによって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が地域の日時設定に依存して作成するセルのタイプですか?
は参考のため、ここでは、スプレッドシートからのセルを読み取るための私が今持っているコードです:私はより良いclass
ではなくcell_type
をチェックすることで、細胞のタイプを判定することができるように
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
私は(つまりテキスト)、 '数値のためのN '(または式)、またはExcelでcell_type'sは、ラベルの' L 'に限定されている'考えます空白のセルには 'b'を使います。日付は実際には、Excelと関係がある特定の方法でフォーマットされた数字です。 – Skippy