相关疑难解决方法(0)

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

所以我们有这个支持UTF8数据的网络应用程序.万岁UTF8.我们可以将用户提供的数据导出为CSV没问题 - 此时它仍然是UTF8.问题是当你在Excel中打开一个典型的UTF8 CSV时,它会将其读作ANSII编码文本,并因此尝试读取两个字节的字符,如ø和ü作为两个单独的字符,最终会失败.

所以我已经做了一些挖掘(Intervals人员在这里有一个有趣的帖子),并且有一些有限的,如果有可笑的烦人选择.其中:

  • 提供一个UTF-16 Little Endian TSV文件,Excel将正确解释,但不支持多行数据
  • 使用Excel mime类型或文件扩展名在HTML表格中提供数据(不确定此选项是否支持UTF8)
  • 在理论上,有三种或四种方法可以将XML数据导入各种最新版本的excel,并且这些方法将支持UTF8.SpreadsheetML,使用自定义XSLT,或通过模板生成新的Excel XML格式.

看起来无论如何,我可能会继续为那些不使用它的人提供一个普通的CSV文件,以及一个单独的Excel下载选项.

生成那个能正确支持UTF8的Just-For-Excel文件的最简单方法是什么,亲爱的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 = …
Run Code Online (Sandbox Code Playgroud)

xml csv excel utf-8 utf-16

27
推荐指数
3
解决办法
3万
查看次数

如何对csv导出进行HTML编码

我明白了

 Quattrode® 
Run Code Online (Sandbox Code Playgroud)

从HTML编码为的字符串

Quattrode® 
Run Code Online (Sandbox Code Playgroud)

在Excel 2007中查看时.

常规

        Response.Clear();
        Response.Buffer = true;

        Response.ContentType = "text/comma-separated-values";
        Response.AddHeader("Content-Disposition", "attachment;filename=\"Expired.csv\"");

        Response.RedirectLocation = "export.csv";

        Response.Charset = "";
        //Response.Charset = "UTF-8";//this does not work either.
        EnableViewState = false;

        ExportUtility util = new ExportUtility();

        Response.Write(util.DataGridToCSV(gridViewExport, ","));
Run Code Online (Sandbox Code Playgroud)

基本上DataGridToCSV()使用 HttpUtility.HtmlDecode(stringBuilder.ToString());,我可以使用visual studio的文本可视化工具,看看字符串看起来正确(Quattrode®).

因此,Response过程或Excel对文件的解释中的某些内容不正确.知道怎么解决?


更新
原来在Excel或写字板中无法正确解释.我在记事本中打开它,符号显示正确.

html c# csv asp.net

2
推荐指数
2
解决办法
6687
查看次数

标签 统计

csv ×2

asp.net ×1

c# ×1

excel ×1

html ×1

utf-16 ×1

utf-8 ×1

xml ×1