rubyXL を使用して、日付付きの xlsx ファイルを処理します。日付処理の仕様は合格ですが、自分のスクリプトで複製しようとすると機能しません。代わりに、日付を浮動小数点数/数値のままにします (これは、日付が Excel に格納される方法です)。Github から rubyXL ソースをダウンロードし、spec を実行しました。日付に関連するすべてが渡されました。ただし、spec ファイルの外部で次を実行すると、間違った動作が発生します。
require 'rubyXL'
workbook = RubyXL::Workbook.new
worksheet = RubyXL::Worksheet.new(workbook)
workbook.worksheets << worksheet
worksheet.add_cell(0, 0, "0:0")
cell = worksheet[0][0]
date = Date.parse("January 20, 2011")
cell.change_contents(date)
puts cell.is_date? # false -- spec says it should be true
puts cell.value == date # false -- spec says it should be true
puts date # 2011-01-20
puts cell.value # 40563/1 <-- should be a date object
これをrubyXL 仕様テストと比較してください(セルは、上で説明したのとまったく同じように開始されます)。
it 'should return the value of a date' do
date = Date.parse('January 1, 2011')
@cell.change_contents(date)
@cell.should_receive(:is_date?).any_number_of_times.and_return(true)
@cell.value.should == date
end
puts
実際に機能していることを確認するためにいくつかのステートメントを追加しました-それは (outputs の2011-01-01
ようなもの) です。cell_spec.rb
また、欠落している設定が設定されているかどうかを確認するために、 を除く spec フォルダー内の他のすべてのファイルを削除しようとしました。それでも何も変わりませんでした。
この時点で、私は困惑していますが、単純なものが欠けているに違いないと確信しています。通常のコードで仕様の動作を複製できない理由がわかりません。