方案是:我正在使用.net mvc4 web应用程序,其中有一个表单数据,我必须先将其转换为Excel格式并下载.xlsx格式的文件。因此我使用过:
List<UploadDownload> listItems = new List<UploadDownload>();
listItems = uploadDownload.ConvertToList();
gridView.DataSource = listItems.ToList();
gridView.DataBind();
gridView.Dispose();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("Content-Disposition", "attachment; filename=abc.xlsx");
Response.ContentType = "application/vnd.openxmlformats- officedocument.spreadsheetml.sheet";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gridView.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
我成功下载了文件(abc.xlsx),但是当我想使用linq读取文件时,每次都会出现“预期文件格式”错误。
对于读取已下载的(abc.xlsx)文件,我使用以下代码:
var excel = new ExcelQueryFactory();
excel.FileName = filepath;
var StepList = excel.Worksheet();
var Steps = from s in excel.WorksheetNoHeader()
select (string)s[1];
请帮帮我。
答案 0 :(得分:1)
您不能只将HTML网格的内容写入文件,然后在文件上加上“.xlsx”扩展名,并为其提供正确的内容处理,并希望Excel可以读取它。
Excel期待二进制文件(它实际上是一个zip文件),并且它内部有一个需要正确的整体结构。如果您复制一个真实的Excel文件并将扩展名更改为.zip然后打开它,您将看到我的意思。
您需要使用库来编写excel期望的正确二进制格式,或者以CSV格式编写网格并让excel打开它并进行转换
答案 1 :(得分:1)
如果没有合适的库,您不能简单地阅读Excel .XLSX
文件。 Excel .XLSX
文件是由MS制作的基于XML的压缩文件格式。
MS Open XML SDK 2.5
是我建议的好举措。浏览Documentation。
用于阅读.XLSX
个文件的示例代码:READ
注意:Open XML SDK
是构建定位.XLSX
文件格式(这是一种开放的xml文件格式)。它是Interop