FasterCSV 布局

发布于 2024-10-16 06:00:45 字数 692 浏览 1 评论 0原文

我需要将 CSV 布局为列而不是行。因此,不要遍历电子表格。例如:

标头 1、value1.1、value2.1
标头 2、value1.2、value2.2
标题 3,value1.3,value2.3

有谁知道该怎么做?我已经浏览了文档,但找不到任何有关将布局更改为列的信息。

编辑:

row_data = [];
csv_string = FasterCSV.generate do |csv|
  # header row
  row_data << ["id", "Name", "Age"]

  # data rows
  Playerapplication.find_each do |player|
    row_data << [player.id, player.name, player.age]
  end

  row_data.transpose
  csv << row_data
end

# send it to the browser
send_data csv_string,
          :type => 'text/csv; charset=iso-8859-1; header=present',
          :disposition => "attachment; filename=players_application.csv"

I need to layout my CSV into columns not rows. So going down the spreadsheet not across. For example:

Header 1, value1.1, value2.1
Header 2, value1.2, value2.2
Header 3, value1.3, value2.3

Does anyone know how to do this? I've been through the documentation and can't find anything about changing the layout to columns.

EDIT:

row_data = [];
csv_string = FasterCSV.generate do |csv|
  # header row
  row_data << ["id", "Name", "Age"]

  # data rows
  Playerapplication.find_each do |player|
    row_data << [player.id, player.name, player.age]
  end

  row_data.transpose
  csv << row_data
end

# send it to the browser
send_data csv_string,
          :type => 'text/csv; charset=iso-8859-1; header=present',
          :disposition => "attachment; filename=players_application.csv"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜味拾荒者 2024-10-23 06:00:45

只需在写入 CSV 之前对数据使用 Array#transpose 即可。

如果您像这样修改代码:

row_data = [];
csv_string = FasterCSV.generate do |csv|
  # header row
  row_data << ["id", "Name", "Age"]

  # data rows
  Playerapplication.find_each do |player|
    row_data << [player.id, player.name, player.age]
  end

  row_data.transpose.each do |row|
    csv << row
  end
end

它对我有用。

Simply use Array#transpose on your data before writing to CSV.

If you modify your code like this:

row_data = [];
csv_string = FasterCSV.generate do |csv|
  # header row
  row_data << ["id", "Name", "Age"]

  # data rows
  Playerapplication.find_each do |player|
    row_data << [player.id, player.name, player.age]
  end

  row_data.transpose.each do |row|
    csv << row
  end
end

it works for me.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文