asp.net C# 使用HttpContext但不使用npio将datatable导出为多sheet的excel
时间: 2024-02-21 12:58:12 浏览: 130
你可以使用以下代码将多个 DataTable 导出到一个 Excel 文件的多个 sheet 中,但不使用 NPOI 库:
```csharp
protected void ExportToExcel(List<DataTable> tables, string fileName)
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
for (int i = 0; i < tables.Count; i++)
{
// 创建表头
StringBuilder sbTable = new StringBuilder();
sbTable.Append("<table><tr>");
for (int j = 0; j < tables[i].Columns.Count; j++)
{
sbTable.Append("<td><b>" + tables[i].Columns[j].ColumnName + "</b></td>");
}
sbTable.Append("</tr>");
// 填充数据
for (int row = 0; row < tables[i].Rows.Count; row++)
{
sbTable.Append("<tr>");
for (int col = 0; col < tables[i].Columns.Count; col++)
{
sbTable.Append("<td>" + tables[i].Rows[row][col].ToString() + "</td>");
}
sbTable.Append("</tr>");
}
sbTable.Append("</table>");
// 输出到 HttpContext
HttpContext.Current.Response.Write(sbTable.ToString());
HttpContext.Current.Response.Write("<br/><br/>");
}
HttpContext.Current.Response.End();
}
```
使用方法示例:
```csharp
List<DataTable> tables = new List<DataTable>();
tables.Add(GetDataTable1());
tables.Add(GetDataTable2());
ExportToExcel(tables, "test.xls");
```
其中,`GetDataTable1()` 和 `GetDataTable2()` 分别是获取需要导出的两个 DataTable 的方法,`"test.xls"` 是导出的 Excel 文件的文件名。导出的文件会自动下载到客户端计算机。请注意,使用该方法导出的 Excel 文件格式为旧版的 .xls 格式,如果需要导出新版的 .xlsx 格式,需要使用第一个示例中的 NPOI 库。
阅读全文