C# 有没有办法指定SpreadsheetGear中用于生成CSV文件的编码?
我正在尝试使用电子表格Gear将包含Unicode字符的数据从我们的系统导出为csv格式。(excel很好) 但是,由于CSV格式不是UTF-8编码的,所以所有Unicode字符都导出为 我知道电子表格Gear通过使用制表符分隔的UTF-8文本文件支持Unicode,但是我们需要逗号分隔的文件 这就是当前存在的情况(包括我检查Unicode文本文件格式是否正确导出字符):C# 有没有办法指定SpreadsheetGear中用于生成CSV文件的编码?,c#,csv,unicode,utf-8,spreadsheetgear,C#,Csv,Unicode,Utf 8,Spreadsheetgear,我正在尝试使用电子表格Gear将包含Unicode字符的数据从我们的系统导出为csv格式。(excel很好) 但是,由于CSV格式不是UTF-8编码的,所以所有Unicode字符都导出为 我知道电子表格Gear通过使用制表符分隔的UTF-8文本文件支持Unicode,但是我们需要逗号分隔的文件 这就是当前存在的情况(包括我检查Unicode文本文件格式是否正确导出字符): publicstaticvoidexporttostream(流、IDataSource数据、IEnumerable列、Ex
publicstaticvoidexporttostream(流、IDataSource数据、IEnumerable列、ExportFormat)
{
var exporter=新的ExportCreator
{
数据=数据,
Columns=Columns.ToArray(),
EscapeFormulas=format==ExportFormat.Xlsx
};
var workbook=exporter.GetWorkBookForExport();
开关(格式)
{
//需要在此处添加一些内容,以便将csv编码为utf-8-
//目前电子表格齿轮仅支持utf-8编码的制表符分隔文本文件
案例导出格式.Csv:
工作簿.SaveToStream(流,文件格式.Unicodext);
打破
案例导出格式.Xlsx:
SaveToStream(stream,FileFormat.OpenXMLWorkbook);
打破
}
}
据我所知,从电子表格齿轮文档等,UnicodeText格式可以解决这个问题,但不符合我们对CSV文件格式的要求
是否有办法指定流的编码,以便将CSV文件格式保存为UTF-8编码?SpreadsheetGear不提供指定CSV文件编码的选项,也不提供指定给定基于文本的数据文件使用的分隔符的选项。如果您有一个使用UTF编码的CSV,您需要构建自己的例程来相应地读取和处理此文件,然后将该数据逐个单元格手动插入工作表。我怀疑是这样(但希望不是这样),感谢您的澄清。如果将来会支持UTF-8 CSV文件格式,有什么想法吗?我们会接受这样的请求(我为SpreadsheetGear工作),尽管我无法提供这一特定功能何时实现的时间表。欢迎您通过以下地址与我们联系:support@spreadsheetgear.com使用此功能请求项,以便我可以将您添加到列表中。那样的话,如果我们真的实施了,我们一定会让你知道的。
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;
}
}