ASP.NET MVC导出html表格excel无法正常工作

时间:2018-02-27 16:01:25

标签: asp.net asp.net-mvc excel

我在这里有这个方法:

[Authorize]
        [HttpPost]
        [ValidateInput(false)]
        public void ExportCostMatrixExcel(string GridHtmlExcel, string GridCommunityExcel)
        {
            Response.ClearContent();
            Response.ClearHeaders();
            Response.BufferOutput = true;
            Response.ContentType = "application/excel";
            Response.AddHeader("Content-Disposition", "attachment; filename=Reliquat.xlsx");
            Response.Write(GridHtmlExcel);
            Response.Flush();
            Response.Close();
            Response.End();
        }

这需要我的html表并将其转换为Excel电子表格,当我尝试打开文件时,收到此错误消息:

  

Excel无法打开文件'Reliquat.xlsx',因为文件格式   或文件扩展名无效。验证文件尚未存在   已损坏且文件扩展名与文件格式匹配。

为什么会发生这种情况,你可以在下面的链接上看到GridHtmlExcel,它是一个带有colspans的HTML表格,是不是搞乱了它?#/ p>

https://jsfiddle.net/2nyjhpaz/3/

1 个答案:

答案 0 :(得分:1)

从本质上讲,您似乎只是将内容转储到文件中,只是将其重命名为XLSX。但是,该扩展遵循特定的基于XML的架构,这就是为什么它不能很好地发挥作用。

您有几个选择:

  1. 找一个可以为你做这件事的图书馆 - 初步搜索列出了一些,但他们经常是善变的小生物。
  2. 使用HTML Agility Pack之类的内容将HTML解析为可用格式并将其写入excel文件。您可能需要手动创建excel文件,可能使用Office Interop内容。
  3. 如果excel格式本身并不是一个大问题,您可以选择使用CSV Helper来编写CSV文件(并且可以通过Excel打开) - 但是您可以仍然需要解析HTML。