所以我做了一些挖掘(Intervals的人有一个有趣的帖子about it here),有一些有限的,如果可笑的恼人的选择。其中:
>提供一个UTF-16小端TSV文件,Excel将正确解释,但不支持多行数据
>使用Excel mime类型或文件扩展名在HTML表中提供数据(不确定此选项是否支持UTF8)
>有一些三到四种方法来获取XML数据到各种最新版本的excel,并且那些将支持UTF8,理论上。 SpreadsheetML,使用自定义XSLT,或通过模板生成新的Excel XML格式。
它看起来像无论什么,我可能要继续提供一个普通的CSV文件为不使用它为Excel的人和一个单独的下载选项的Excel。
什么是最简单的方式生成的Just-For-Excel文件,将正确支持UTF8,我亲爱的Stack Overflowers?如果最简单的选项只支持最新版本的Excel,这仍然是感兴趣的。
我在Rails栈上这样做,但是好奇的是.Net -ers和任何框架的人都处理这个。我在自己的几个不同的环境中工作,这绝对是一个问题,将再次成为。
更新2010-10-22:我们在我们的时间跟踪系统Tempo中使用Ruport gem提供CSV导出,当我第一次发布此问题。我的同事之一,Erik Hollensbee,一起为Ruport一个快速过滤器提供给我们实际的Excel XSL输出,我想我会在这里分享任何其他红宝石:
require 'rubygems' require 'ruport' require 'spreadsheet' require 'stringio' Spreadsheet.client_encoding = "UTF-8" include Ruport::Data class Ruport::Formatter::Excel < Ruport::Formatter renders :excel,:for => Ruport::Controller::Table def output retval = StringIO.new if options.workbook book = options.workbook else book = Spreadsheet::Workbook.new end if options.worksheet_name book_args = { :name => options.worksheet_name } else book_args = { } end sheet = book.create_worksheet(book_args) offset = 0 if options.show_table_headers sheet.row(0).default_format = Spreadsheet::Format.new( options.format_options || { :color => :blue,:weight => :bold,:size => 18 } ) sheet.row(0).replace data.column_names offset = 1 end data.data.each_with_index do |row,i| sheet.row(i+offset).replace row.attributes.map { |x| row.data[x] } end book.write retval retval.seek(0) return retval.read end end
我推荐SpreadsheetML选项。它的工作原理很好,赔率是你的平台有一些体面的工具,用于构建xml文件,它完全支持作为OfficeXP。 Office2000不受支持,但个人经验是它的工作有限的方式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。