使用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 -%>