【发布时间】:2012-12-12 13:03:31
【问题描述】:
我在将数据导出到 .csv 文件时遇到问题。我用了两种方法。
Encoding csvEncoding = new UTF8SignatureEncoding();
byte[] csvFile = TestByte(CsvContentDelimiter.NewLine, CsvContentDelimiter.Semicolon, csvEncoding);
string attachment = String.Format("attachment; filename={0}.csv", "docs_inv");
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.ContentType = "text/csv";
Response.ContentEncoding = csvEncoding;
Response.AppendHeader("Content-Disposition", attachment);
Response.BinaryWrite(csvFile);
Response.Flush();
Response.End();
和
public byte[] TestByte(CsvContentDelimiter rowDelimiter, CsvContentDelimiter columnDelimiter, Encoding encoding)
{
StringBuilder sb = new StringBuilder();
sb.Append("product;");
return encoding.GetBytes(sb.ToString());
}
此代码创建 .csv 文件,但文件编码错误,我只看到一些“哈希”
【问题讨论】:
-
你确定你看到了一个哈希?你没有看到文件的十六进制版本吗?如果是这样,请尝试在其他文本编辑器中打开它(例如 notepad2)
-
我确定,我用记事本++打开它..
-
因此尝试将 BinaryWrite 更改为 Write,如 @Belogix 所述。但如果可能,不要使用 \r\n,而是使用 string.Format("Record1,Fred,23{0}", Environment.NewLine)
-
Response.Write 没有帮助。我不能写像“Record1,Fred,23\r\nRecord2,Bob,36\r\n”这样的字符串
-
当你说你不能时,问题是什么?