Excel不打开.xls由c# StringBuilder制作

本文关键字:StringBuilder 制作 xls Excel | 更新日期: 2023-09-27 18:02:35

下面的代码是几个月前编写的,经过了完美的测试,在Excel中有一个有趣的小警告信息。现在,在c#代码正常运行并且浏览器下载导出的.xls文件之后,Excel应用程序打开了,但没有显示任何内容,就好像它没有打开导出的文件一样。有没有人看到这段代码的问题,或者知道为什么Excel突然不能打开这个文档?提前感谢!

c#代码:

[HttpGet]
public void DownloadReport()
{
    string filename = "ReportExport";
    //Report source data organized here
    StringBuilder sb = new StringBuilder();
    sb.Append("<table>");
    sb.Append("<tr>");
    foreach (DataColumn column in reportData.Columns)
    {
        sb.Append("<th>");
        sb.Append(column.ColumnName);
        sb.Append("</th>");
    }
    sb.Append("</tr>");
    foreach (DataRow row in reportData.Rows)
    {
        sb.Append("<tr>");
        foreach (DataColumn column in reportData.Columns)
        {
            sb.Append("<td>");
            if (row[column] == null)
            {
                sb.Append("");
            }
            else
            {
                sb.Append(row[column]);
            }
            sb.Append("</td>");
        }
        sb.Append("</tr>");
    }
    sb.Append("</table>");
    Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment;filename=" + fileName + ".xls");
    Response.Charset = "";
    Response.ContentType = "application/vnd.ms-excel";
    string style = @"<style> .textmode { } </style>";
    Response.Write(style);
    Response.Output.Write(sb.ToString());
    Response.Flush();
    Response.End();
}

Excel不打开.xls由c# StringBuilder制作

您没有生成XLS文件。所述代码生成一个HTML片段,并告诉浏览器这是一个Excel文件。Excel本身检查数据,不能解析它(它期待二进制数据)。最好使用Excel生成器库。

看一下从c#创建Excel (.XLS和。xlsx)文件

就我个人而言,我在NPOI和Open XML SDK方面有很好的经验。

在设置标题之前添加Response.ClearHeaders()似乎已经完成了技巧。