rails导出csv乱码问题

本文介绍如何在Rails应用中实现CSV文件的导出,并确保该文件能在Windows下的Excel中正确显示。通过设置CSV的分隔符为逗号及在文件头部添加UTF-8 BOM,可以解决导出文件在Excel打开时的格式和编码问题。

    使用wicegird导出csv文件,参照wicegird的官方例子,比较顺利,但是在测试发现window下,excel打开不会自动转换(只能通过新建excel,打开以后导入才有正确的格式),修改csv的分割符号,只有逗号excel打开的时候才会自动转换.

Controller:

 

def bill
    @issue_numbers_grid = initialize_grid(IssueNumber,
      include: :number,
      per_page:20,
      order:'issue_numbers.id', 
      order_direction: 'desc',
      enable_export_to_csv: true,
      # csv_field_separator: ';',#默认使用,号
      csv_file_name:"账单"
    )
    export_grid_if_requested('grid' => 'issue_numbers_grid') do
      # usual render or redirect code executed if the request is not a CSV export request
    end
  end
 

 

    rails导出的csv文档默认是使用utf-8,但是一般window下excel打开的时就出现乱码了.在到处csv的头行最开始加入"\xEF\xBB\xBF"(ruby文件中必须要用双引号,真正生成的时候编译成csv的BOM头),window下excel打开时竟然自动进行了编码转换.

 bill.html.erb

 

<p>
  <button data-grid-name="grid" class="btn btn-primary wg-external-csv-export-button">导出</button>
</p>
<%= render 'issue_numbers_grid' %>
<%= link_to t('.back', :default => t("helpers.links.back")),
              customers_path, :class => 'btn btn-default'  %>
 

 

_issue_numbers_grid.html.erb

<%= grid(@issue_numbers_grid, hide_csv_button:true) do |g|

  g.blank_slate content_tag(:div, "无记录", class: 'well')

  g.column name:"\xEF\xBB\xBF号码", attribute: 'phone_num'

  g.column name:"语音通信费" ,attribute: 'voice'

  g.column name:"短信彩信费" ,attribute: 'message'
 
end -%>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值