1

使用 ruby​​XL 处理带有日期的 xlsx 文件。日期处理规范通过了,但是当我尝试在自己的脚本中复制它时,它不起作用。相反,它将日期保留为浮点数/数字(这是日期在 excel 中的存储方式)。我从 Github下载了ruby​​XL 源代码并运行了规范。与过去日期有关的一切。但是,当我在规范文件之外运行以下内容时,它会表现出错误的行为。

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

将此与ruby​​XL 规范测试进行比较(单元开始时与我在上面所说的完全相同):

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,以查看是否设置了我丢失的设置。仍然没有改变任何东西。

在这一点上,我很困惑,但我确定我一定错过了一些简单的东西。我只是不明白为什么我不能在常规代码中复制规范行为。

4

0 回答 0