【问题标题】:Quotes in generated CSV生成的 CSV 中的引号
【发布时间】:2014-04-08 14:28:18
【问题描述】:

我正在我的模型中生成 CSV,以将其作为文件进行响应。

def self.to_csv
    CSV.generate(col_sep: "\;") do |csv|
      csv << ["1", "2", "3", "4", "5"]
      all.each do |record|
        csv << [record.date.to_s, record.text, (MessageCharacter.find_by_id(record.message_character_id).try(:name) || ""), record.commentable.name, record.user.name].map{|e| "#{e}"}
      end
    end
  end

因此,我希望将所有内容都用引号括起来,例如:

"1";"2";"3";"4";"5"
"value1";"value2";"value3";"value4";"value5"

但是我得到的不是引号的值(如果在输入数据中我没有用引号括起来),或者如果我用额外的引号括起来,我每个值都有 3 个引号!那么如何以上面显示的方式包装所有值呢?

【问题讨论】:

    标签: ruby-on-rails ruby csv


    【解决方案1】:

    force_quotes?() 你可以像这样使用force_quotes 选项:

    def self.to_csv
        CSV.generate(col_sep: "\;", force_quotes: true) do |csv|
          csv << ["1", "2", "3", "4", "5"]
          all.each do |record|
            csv << [record.date.to_s, record.text, (MessageCharacter.find_by_id(record.message_character_id).try(:name) || ""), record.commentable.name, record.user.name].map{|e| "#{e}"}
          end
        end
      end
    

    您还可以指定与quote_char: '"' 一起使用的引号,但无论如何双引号是标准的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-07
      • 2020-09-14
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 2015-04-24
      • 2010-12-18
      • 1970-01-01
      相关资源
      最近更新 更多