首页 文章

为什么不在csv中导出数字?

提问于
浏览
0

请帮忙解决问题 .

我创建脚手架产品,填写它,并尝试将产品数据导出到csv格式文件 . application_controller.rb:

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  require 'csv'
end

产品控制器:

class ProductsController < ApplicationController
  def index
    @products = Product.all

    respond_to do |format|
      format.html
      format.csv do
        headers['Content-Disposition'] = "attachment; filename=\"user-list\""
        headers['Content-Type'] ||= 'text/csv'
      end
    end    
  end
end

应用程序/视图/用户/ index.csv.erb:

<%- headers = [
  'title', 
  'is_catalog', 
  'parent_id', 
  'lft', 
  'rgt', 
  'description'
] -%>
<%= CSV.generate_line headers %>
<%- @products.each do |product| -%>
  <%= CSV.generate_line([
    product.title, 
    product.is_catalog, 
    product.parent_id, 
    product.lft, 
    product.rgt, 
    product.description
  ]) %>
<%- end -%>

模式:

create_table "products", force: :cascade do |t|
  t.string   "title"
  t.text     "description"
  t.boolean  "is_catalog"
  t.integer  "parent_id"
  t.integer  "lft"
  t.integer  "rgt"
end

但是在打开链接'host/products.csv'之后,下载了'lft'列中包含'###'符号的csv文件 . 截图http://hostingkartinok.com/show-image.php?id=f08a98e485285e4adb23f5c148620aa2

请帮助导出'lft'列值

2 回答

  • 0

    当数字太大而无法在可用列宽中显示时,“###”符号是Excel表示形式 . 因此,只需通过拖动列 Headers 或双击列 Headers 中的右侧分隔符来扩大列,以便将widt自动调整为具有最大宽度的值 .

  • 2

    我猜你的电子表格软件(Excel?)的结果数字太宽了 . 如果使用文本编辑器打开文件时显示正确,则表示没问题 . 您的数据写得很好 .

相关问题