Excel 无法打开由 C# StringBuilder 制作的 .xls
Excel not opening .xls made from C# StringBuilder
以下代码是几个月前编写的,经过完美测试,在 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();
}
您没有生成 XLS 文件。所述代码生成一个 HTML 片段并告诉浏览器这是一个 Excel 文件。 Excel 本身检查数据并且无法解析它(它需要二进制数据)。最好使用 Excel 生成器库。
看看Create Excel (.XLS and .XLSX) file from C#
就个人而言,我在 NPOI 和 Open XML SDK 方面取得了很好的经验。
在设置 header 之前添加 Response.ClearHeaders()
似乎已经成功了。也许内容类型之前已指定,需要重新设置。
以下代码是几个月前编写的,经过完美测试,在 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();
}
您没有生成 XLS 文件。所述代码生成一个 HTML 片段并告诉浏览器这是一个 Excel 文件。 Excel 本身检查数据并且无法解析它(它需要二进制数据)。最好使用 Excel 生成器库。
看看Create Excel (.XLS and .XLSX) file from C#
就个人而言,我在 NPOI 和 Open XML SDK 方面取得了很好的经验。
在设置 header 之前添加 Response.ClearHeaders()
似乎已经成功了。也许内容类型之前已指定,需要重新设置。