将html表保存到Excel

时间:2014-03-19 16:45:35

标签: html asp.net excel vba

我之前已经多次询问过这个问题,但万一我可能已经逃脱了一些眼睛,我再次陈述问题

我们的ASP.Net网络应用程序显示一些呈现为屏幕html表的报告,我们还具有导出功能。它是标准代码

Table a = new Table();

Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "Customers.xls"));
Response.ContentType = "application/ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gridName.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();

到目前为止一切顺利。问题是,当导出到excel时它实际上被保存为html,所以当Excel打开文件时,它会出现警告说格式不正确。在警告文件打开后,这不是什么大问题。

但是对于IE11,有时这些文件拒绝打开说格式不正确。随着IE11将向越来越多的用户推出,我们将不得不解决这个问题。我有的选择是

  1. 找到一种方法将其另存为XLS文件而不是HTML
  2. 单击导出时将整个输出重写为excel,而不是将控件的输出呈现为excel。我们在项目中使用Aspose,所以我可以这样做
  3. 我确实试图找出,但无法找到任何可以将内容保存为实际xls数据而非html的内容。我确信这是一个非常普遍的问题,所以如果有人对此有任何解决方案或建议。

    如果没有任何效果,我将不得不使用选项2,考虑到格式和样式,这是更多的工作。

2 个答案:

答案 0 :(得分:0)

默认使用excel打开csv文件类型,这个JQuery插件有助于在csv文件中保存HTML表。

http://www.kunalbabre.com/projects/table2CSV.php

https://github.com/ZachWick/TableCSVExport

答案 1 :(得分:0)

您可以使用Aspose.Cells将HTML表格导入Excel。将导入HTML表格中的数据,但是,您需要处理表格格式。

//table.txt contains HTML table
string contents = File.ReadAllText(@"C:\data\table.txt");

using (var stream = new MemoryStream(Encoding.ASCII.GetBytes(contents)))
{
    var loadOptions = new LoadOptions(LoadFormat.Html)
    {
        ConvertNumericData = false
    };

    //Load the HTML, this will import all the HTML table data to Excel file
    var workbook = new Workbook(stream, loadOptions);

    //Adding a new List Object to the worksheet, after this you can format the table
    Aspose.Cells.Tables.ListObject listObject = workbook.Worksheets[0].ListObjects[workbook.Worksheets[0].ListObjects.Add("A3", "E23", true)];

    //Adding predefined Style to the table
    listObject.TableStyleType = Aspose.Cells.Tables.TableStyleType.TableStyleMedium10;

    //Save using Response
    workbook.Save(this.Response, "Customer.xls", ContentDisposition.Inline, new XlsSaveOptions());
}

希望这有帮助。