5

我有这段代码可以在 .xls 文件中将表提取到计算机:

// I have a string which contains HTML table codes, named as excelTable

HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.AddHeader("Content-Disposition", String.Format("Attachment;Filename=file.xls", ));
response.Buffer = true;
response.ContentEncoding = System.Text.Encoding.Default;
response.ContentType = "application/vnd.ms-excel";
response.Write(excelTable);
response.End();

而且我已经看到这不是一个真正的 .xls 文件。我可以在记事本中打开它并查看我的标准 html 表格代码。

现在我明白定义ContentType是不够的。那么我还能做些什么来生成纯 .xls 或 .xlsx 文件?或者我是否应该使用 OpenXML、Interop 等 Excel 库?

4

1 回答 1

4

实际的 XLS/XLSX 数据必须发回 - 即使用库(例如EEPlus)或其他合适来源生成的数据。

这种常见的破解/方法之所以有效,是因为 Excel“知道如何阅读 HTML”。它实际上并没有将 HTML 转换为 XSL/XLSX,尽管它可以在Excel 加载后另存为新的电子表格。

更改内容类型不会对数据产生影响,而是会有效地阻止这种方法的工作:内容类型用于关联将用于打开/读取数据的程序(即 Excel)。

所以是的:要生成真正的XLS/XLSX 文档,请使用库。

于 2013-02-28T09:11:17.840 回答