通过ClosedXML.dll打开Excel文件显示错误“Excel发现不可读的内容”

本文关键字:Excel 发现 dll ClosedXML 打开 文件 错误 显示 通过 | 更新日期: 2023-09-27 17:51:16

嗨,我使用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();
    }
}

通过ClosedXML.dll打开Excel文件显示错误“Excel发现不可读的内容”

在做了很多事情之后,我从msdn博客网站找到了一个解决方案。这是

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

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

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

System.IO.MemoryStream stream = new System.IO.MemoryStream();
document.SaveAs(stream);
stream.Position = 0;
stream.Close();