使用rubyXL处理带日期的xlsx文件。日期处理的规范通过,但是当我尝试在我自己的脚本中复制它时,它不起作用。相反,它将日期保留为浮点数/数字(这是日期存储在Excel中的方式)。我下载了rubyXL source from Github并运行了规范。与日期有关的一切都通过了。但是,当我在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 spec test进行比较(单元格的开头与我上面提到的完全相同):
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
语句来检查它是否真的有效 - 它是(输出2011-01-01
- 就像事情一样)。我还尝试删除spec文件夹中除cell_spec.rb
之外的所有其他文件,只是为了查看是否设置了我丢失的设置。仍然没有改变任何事情。
此时,我感到困惑,但我确信我一定会错过一些简单的事情。我只是不明白为什么我不能在常规代码中复制规范行为。