UTF8无法在Excel中运行

时间:2011-11-01 10:33:24

标签: c# .net asp.net-mvc excel

在我的.net代码中我正在使用

byte[] bytesToSend = System.Text.Encoding.UTF8.GetBytes(partialtorender);
然后把它写成excel

“印地语”中的文字语言在生成的excel中变得乱七八糟,你能建议做什么吗?

System.IO.MemoryStream memStr = new System.IO.MemoryStream();

memStr.Write(bytesToSend, 0, bytesToSend.Length);

 memStr.Position = 0;

FileStreamResult result1 = new FileStreamResult(memStr, "application/ms-excel");

Response.AddHeader("content-disposition", "attachment; filename=" + "newExcelSheet" + ".xls");

return result1;

3 个答案:

答案 0 :(得分:9)

尝试发出UTF-8前导码以指示对Excel的正确编码。此外,.xls是专有的二进制格式。您不能像在代码中那样使用字符串变量。

以下是CSV文件导出的示例:

public ActionResult Index()
{
    var csv = "मानक हिन्दी;some other value";
    var data = Encoding.UTF8.GetBytes(csv);
    data = Encoding.UTF8.GetPreamble().Concat(data).ToArray();
    var cd = new ContentDisposition
    {
        Inline = false,
        FileName = "newExcelSheet.csv"
    };
    Response.AddHeader("Content-Disposition", cd.ToString());
    return File(data, "text/csv");
}

答案 1 :(得分:0)

您的问题可能是XLS文件的默认编码是不是 UTF-8。请保存您收到的文件并根据以下帖子打开它:Choose an encoding standard when you open a file 这会解决您的问题吗?

答案 2 :(得分:0)

经过多次努力,我找到了解决方案。 如果你查看xls文件的文本,你会发现它不是一个格式良好的html,无论如何excel都会处理它。 但我想我应该让excel知道它是utf-8。所以我用过:

Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>");

在编写流的其余部分之前,它确实有用!。