我正在尝试使用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编码?
答案 0 :(得分:0)
SpreadsheetGear不提供指定CSV文件编码的选项,也不提供选项来指定用于给定基于文本的数据文件的分隔符。如果您使用UTF编码CSV,则需要构建自己的例程,相应地读取和处理此文件,然后手动将该数据逐个插入工作表中。