有没有办法指定SpreadsheetGear中用于生成CSV文件的编码?

时间:2015-03-23 14:02:23

标签: c# csv unicode utf-8 spreadsheetgear

我正在尝试使用Spreadsheet Gear将包含Unicode字符的数据导出到csv格式。 (很好的excel)。

但是因为CSV格式不是UTF-8编码,所有Unicode字符都导出为???

我知道Spreadsheet Gear通过使用制表符分隔的UTF-8文本文件来支持Unicode,但我们需要以逗号分隔的文件。

这是目前存在的(包括我检查Unicode文本文件格式正确导出字符):

public static void ExportToStream(Stream stream, IDataSource data, IEnumerable<ColumnInfo> columns, ExportFormat format)
    {
        var exporter = new ExportCreator
        {
            Data = data,
            Columns = columns.ToArray(),
            EscapeFormulas = format == ExportFormat.Xlsx
        };
        var workbook = exporter.GetWorkBookForExport();
        switch (format)
        {
            //need to put something in here to enable the csv to be encoded as utf-8 - 
            //currently spreadsheet gear only supports utf-8 encoded tab delimited text file
            case ExportFormat.Csv:
                workbook.SaveToStream(stream, FileFormat.UnicodeText);
                break;
            case ExportFormat.Xlsx:
                workbook.SaveToStream(stream, FileFormat.OpenXMLWorkbook);
                break;
        }
    }

据我所知,通过搜索Spreadsheet Gear文档和SO,UnicodeText格式可以解决问题,但不符合我们对CSV文件格式的要求。

有没有办法指定流的编码,以便CSV文件格式保存为UTF-8编码?

1 个答案:

答案 0 :(得分:0)

SpreadsheetGear不提供指定CSV文件编码的选项,也不提供选项来指定用于给定基于文本的数据文件的分隔符。如果您使用UTF编码CSV,则需要构建自己的例程,相应地读取和处理此文件,然后手动将该数据逐个插入工作表中。