我尝试以分号作为分隔符字符导出为UTF-8编码的.csv
文件:
context.Response.Clear();
context.Response.ClearHeaders();
context.Response.ClearContent();
context.Response.AppendHeader("content-disposition", string.Format("attachment; filename={0}", GetFileName(...)));
context.Response.ContentType = "Application/csv";
var encoding = Encoding.UTF8;
context.Response.ContentEncoding = encoding;
context.Response.BinaryWrite(encoding.GetPreamble());
context.Response.Output.Write("sep=;"); // tell Excel to interpret semicolon as separator
//csv file content creation here (using context.Response.Output.WriteLine)
context.Response.Flush();
context.Response.End();
问题在于行:
context.Response.BinaryWrite(encoding.GetPreamble());
context.Response.Output.Write("sep=;");
不能一起正常工作:
只使用第一行我可以解决编码问题,当Excel显示像ÐÐ'ОÐÐ这样的Unicode字符时。但如果没有第二行,Excel将显示第一列中的所有数据。
您能否帮我理解如何强制Excel使用UTF-8编码和;
作为分隔符?