xml – 将UTF8数据导出到Excel的最好方法是什么?

前端之家收集整理的这篇文章主要介绍了xml – 将UTF8数据导出到Excel的最好方法是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我们有这个网络应用程序,我们支持UTF8数据。 Hooray UTF8。我们可以将用户提供的数据导出到CSV没有问题 – 它仍然在UTF8在那一点。问题是当你在Excel中打开一个典型的UTF8 CSV,它读取它作为ANSII编码文本,因此试图读取ø和ü两个字节的字符作为两个单独的字符,你最终失败。

所以我做了一些挖掘(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
您忘记创建OleDB数据源和Excel Interop,但这些也有问题。

我推荐SpreadsheetML选项。它的工作原理很好,赔率是你的平台有一些体面的工具,用于构建xml文件,它完全支持作为OfficeXP。 Office2000不受支持,但个人经验是它的工作有限的方式。

猜你在找的XML相关文章