带有多个Excel工作表的ASP.NET C#Excel导出程序

我有问题,我应该出口一个ASP:表格到Excel。 导出到Excel工作正常,所以这里是我当前的代码。

string[] htmlTableString = generateHtmlTable(divs); StringBuilder sb_ExcelData = new StringBuilder(); sb_ExcelData.Append(@"<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:excel' xmlns='http://www.w3.org/TR/REC-html40'><head><title>KzB</title>"); sb_ExcelData.Append(@"<body lang=EN-US style='mso-element:header' id=h1><span style='mso--code:DATE'></span><div class=Section1>"); sb_ExcelData.Append("<DIV style='font-size:12px;'>"); sb_ExcelData.Append(htmlTableString[0]); // HERE IS MY PROBLEM sb_ExcelData.Append("</div></body></html>"); string strFile = "Kzb_"+"Jahr_"+dd_Year.SelectedValue+ "_Export_" + DateTime.Now.Day.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Year.ToString() + ".xls"; string strcontentType = "application/excel"; Response.ClearContent(); Response.ClearHeaders(); Response.BufferOutput = true; Response.ContentType = strcontentType; Response.AddHeader("Content-Disposition", "attachment; filename=" + strFile); Response.Write(sb_ExcelData.ToString()); Response.Flush(); Response.Close(); Response.End(); 

在代码中你可以看到string[] htmlTableString,有我的ASP:表内容。 现在我想在Excel中显示每个包含的string新工作表/工作表/选项卡。 那么我怎么能得到这个function?

我search了很多,但我不想使用外部库。

我通过使用Glix @Glix的信息创build了一个可能性我使用EEPlus Lib来创build多个工作表。

例如,以这样的方式:

 private MemoryStream createMemoryStream(DataTable[] tables, int[] divs) { MemoryStream ms = new MemoryStream(); ExcelPackage pck = new ExcelPackage(); for (int i = 0; i < tables.Length; i++) { ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Division_" + divs[i].ToString()); ws.Cells["A1"].LoadFromDataTable(tables[i], true); } pck.SaveAs(ms); return ms; } 

MemoryStream可以用于Response.BinaryWrite。 通过这种方式,您可以使用不同的选项卡/工作表下载Excel文件。

我已经尝试了许多不同的手动技术来导出ASP.NET中的Excel。 我发现到目前为止效率最高的是以Office XML格式创buildExcel文件。 这具有要求用户在下载之后将其保存为.xlsx文件的缺点。 但是这些文件的重量非常轻,下载速度非常快。 这里是一个很好的一步一步教程如何生成一个Office XML Excel文件。

您也可以使用较新的Office Open XML格式。 这将创build.xlsx格式的文件。 但是它要求您使用Open XML SDK 。 这里是使用Office Open XML SDK的一个很好的教程 。

你不能使用你正在使用的代码。 这只是一个肮脏的黑客写入HTML文件,Excel可以打开,因为MS接受HTML在他们的办公产品。

如上所述,使用XML格式,或EPPlus等第三方插件。