我建议使用 Excel 文件扩展名创建一个实际的 Excel 文件,而不是 CSV 或 HTML。
实现此目的的一种简单方法是使用ClosedXML。
为此,请从 codeplex 站点下载 ClosedXML.dll 和 DocumentFormat.OpenXml.dll,并将它们作为引用添加到您的 ASP.NET 项目中。然后,在您的按钮单击事件中,您可以简单地设置一个 Excel 工作簿,从DataTable
您绑定到的相同工作表创建一个工作表GridView
,并将工作簿文件保存在 HTTP 响应中。像这样的东西:
var wb = new ClosedXML.Excel.XLWorkbook();
DataTable dt = GetTheDataTable();
dt.TableName = "This will be the worksheet name";
wb.Worksheets.Add(dt);
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=\"FileName.xlsx\"");
using (var ms = new System.IO.MemoryStream()) {
wb.SaveAs(ms);
ms.WriteTo(Response.OutputStream);
ms.Close();
}
Response.End();
我会选择 ClosedXML 而不是其他替代方案,因为许可证限制较少,文档极好,开发人员乐于助人且友好,并且该项目目前非常活跃。