【发布时间】:2020-01-03 22:02:43
【问题描述】:
我正在尝试使用 AXLSX gem 将 CSV 文件的所有内容复制到 Excel 工作簿。在第二张纸上,我只想要复制 2 列。下面是一个例子。
我尝试了“.map”方法,但没有奏效。
require 'csv'
require 'Axlsx'
p = Axlsx::Package.new
wb = p.workbook
animals = CSV.read('test.csv', headers:true)
column = ['Animals', 'Name']
headers = Array.new
headers << "Animal"
headers << "Name"
headers << "Age"
headers << "State"
wb.add_worksheet(:name => 'Copy') do |sheet|
animals.each do |row|
headers.map { |col| sheet.add_row [row[col]] }
end
end
wb.add_worksheet(:name => 'Names') do |sheet|
animals.each do |row|
column.map { |col| sheet.add_row [row[col]] }
end
end
p.serialize 'Animals.xlsx'
【问题讨论】:
-
"that didn't work" 不是一个足够精确的错误描述,我们无法帮助您。 什么不起作用? 如何不起作用?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?
-
嗨 Jorg,我对此很陌生,很抱歉不清楚。当我使用“.map”方法时,它会将 CSV 文件中的数据提取到 xlsx 文件中,但仅将数据复制到 A 列中(我上传了一个标题为:“我的代码输出”的屏幕截图。所需的输出类似我的第一张图片标题为:“CSV - 但也需要 XLSX 上的输出”。让我知道我可以回答任何其他问题来提供帮助。
-
我想你想做
sheet.add_row headers.map { |col| row[col] } -
@arieljuod 这行得通,完全符合我的期望。感谢您的帮助!
标签: ruby-on-rails ruby axlsx