我有这个代码在.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库吗?
答案 0 :(得分:4)
实际必须发回XLS / XLSX数据 - 即使用库(例如EEPlus)或其他合适来源生成的数据。
这种常见的黑客/方法有效,因为Excel"知道如何阅读HTML"。 实际上并没有将HTML转换为XSL / XLSX,尽管它可以在Excel加载后保存为 new 电子表格。
更改内容类型对数据没有任何影响,而是有效地阻止此方法工作:内容类型用于关联将用于的程序(即Excel)打开/读取数据。
是的:要生成真正的 XLS / XLSX文档,请使用库。