【发布时间】:2013-05-25 07:26:12
【问题描述】:
我正在使用 ruby 将 excel 文件转换为 csv 文件。这是我为此编写的函数:
#!/usr/bin/ruby
require 'CSV'
require 'roo'
def xls_to_csv(file,temp_filename)
if file =~ /\.xlsx$/
excel = Roo::Excelx.new(file)
else
excel = Roo::Excel.new(file)
end
output = File.open(temp_filename, "w")
1.upto(excel.last_row) do |line|
output.write CSV.generate_line excel.row(line)
end
end
它工作正常,除了在文件中的任何邮政编码之后它会添加一个“.0”。以下是输入数据的示例:
address state zip code name
123 Lane TX 78705 John Smith
456 Lane MS 39564 Smohn Jith
一旦 .xls 文件通过函数运行,这里是 CSV 输出:
address,state,zip code,name
123 Lane,TX,78705.0,John Smith
456 Lane,MS,39564.0,Smohn Jith
如您所见,邮政编码现在后面有“.0”。有没有办法避免这种情况?谢谢!
【问题讨论】:
-
您能否将 Excel 文档中邮政编码字段的数据类型更改为非数字或至少是整数而不是十进制?应该有一个格式化选项。
-
+1 @Cyle。人们经常错误地将邮政编码字段设置为数字,因为毕竟它是一个数字......有点......直到他们意识到前导零已经消失并且他们需要输入复合邮政编码,如 00000-0000。相反,邮政编码需要是字符串。
标签: ruby csv xls export-to-csv zipcode