2012-08-14 38 views
1

我正在将数据写入另一个Excel工作表的Excel工作表。然而,对于一个列的数据可能看起来像以下任一:红宝石电子表格 - 格式问题

  • $0.00
  • The amount owed at time of service is $33
  • 20%
  • 或空字符串。

我的问题是,当我把它写入文件,Excel将标志着列作为“常规”格式化,并剥去$%并使其0.2。有没有办法将格式设置为纯字符串,以便在写入电子表格时保持数据不变?

我是Ruby新手,所以如果你看到任何代码应该以另一种方式做,请让我知道。

代码示例:

def self.add_data(new_book_sheet, old_book_sheet) 
    row_index = 9 
    header_row = 0 
    old_book_sheet.each do |row| 
    if header_row > 0 
     column_index = 0 
     row.each do |column| 
     new_book_sheet.row(row_index).insert(column_index, column) 
     column_index += 1 
     end 
     row_index += 1 
    end 
    header_row = 1 
    end 
end 
+0

因此,如果有人知道如何让它以字符串的形式读取它,而不是将其转换为“数字”,那将会很棒。借助我的小红宝石体验,我试图做到这一点| column.to_s |但只是抛出了一个错误。在我输入column.to_s的时候,如果我输入了$或者20%已经变为0或者.2。 – covard 2012-08-15 21:10:15

+0

如果您使用的是ruby电子表格gem,则可以使用Row#方法获取原始值(不使用数字格式)。看看http://spreadsheet.rubyforge.org/Spreadsheet/Row.html – satish 2012-10-11 08:32:07

回答

1

输出前加一个单引号和Excel将它解释为文本。我测试了在Excel以下(直接在电子表格中,不使用宝石),并全部被解释为字符串:

  • '$0.00
  • 'The amount owed at time of service is $33
  • '20%
  • '
+0

是的,这确实在Excel文件中工作。但是我想出了我真正的问题。看到我的答案 – covard 2012-08-15 21:05:22

2

所以问题是,当它从原始excel文件中读取数据时,如果它只是一个“数字”类型,它就是这样读取的,所以$ 0.00就是r将其作为0. 我认为问题出在数据的写入上,但实际上是在读取数据时。