1

您好,我使用 ClosedXML.dll 创建了一个 excel 文件,当我要打开该文件时,它显示“Excel 发现无法读取的内容”消息。我的文件内容有瑞典语文本。不知道根本原因是什么?有没有办法设置语言?如何删除该警告请帮助我。这是代码快照。

using (XLWorkbook wb = new XLWorkbook())
{
    wb.Worksheets.Add(dt);  //dt is DataTable

    Response.Clear();
    Response.ClearHeaders();
    Response.Buffer = true;
    Response.Charset = "";
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("content-disposition", "attachment;filename="+fileName+".xlsx");
    Response.ContentEncoding = Encoding.UTF8;
    using (MemoryStream MyMemoryStream = new MemoryStream())
    {
        MyMemoryStream.Capacity = (int)MyMemoryStream.Length;
        wb.SaveAs(MyMemoryStream);
        MyMemoryStream.WriteTo(Response.OutputStream);
        Response.Flush();
        Response.End();
    }
}
4

2 回答 2

5

经过大量工作后,我从 msdn 博客站点找到了解决方案。那是

Response.Flush();
Response.SuppressContent = true;

即使我不知道 SuppressContent 属性的内部工作原理,但它确实对我有用。它可能会删除我的 Excel 表格的一些样式并减小我的文件的大小。而且我还删除了 Response.End() 因为它正在抛出线程中止异常。

于 2015-06-03T07:19:59.117 回答
1

可能您忘记将流的位置设置为 0。

System.IO.MemoryStream stream = new System.IO.MemoryStream();
document.SaveAs(stream);
stream.Position = 0;
stream.Close();
于 2015-09-09T22:32:49.337 回答