从DataTable将数据插入Excel工作表

我正在将数据从数据库中提取到DataTable ,并通过将其绑定到Repeater控件来显示它。 现在我需要将相同的数据复制到Excel电子表格中。 如何使用相同的DataTable填充电子表格。 请建议。

我建议创建一个真正的excel文件而不是html表(许多人都这样做)。 因此我可以热烈推荐EPPlus ( LGPL许可证 )。

然后很简单。 假设你有一个按钮BtnExportExcel

 protected void BtnExcelExport_Click(object sender, System.Web.UI.ImageClickEventArgs e) { try { var pck = new OfficeOpenXml.ExcelPackage(); var ws = pck.Workbook.Worksheets.Add("Name of the Worksheet"); // get your DataTable var tbl = GetDataTable(); ws.Cells["A1"].LoadFromDataTable(tbl, true, OfficeOpenXml.Table.TableStyles.Medium6); foreach (DataColumn col in tbl.Columns) { if (col.DataType == typeof(System.DateTime)) { var colNumber = col.Ordinal + 1; var range = ws.Cells[1, colNumber, tbl.Rows.Count, colNumber]; // apply the correct date format, here for germany range.Style.Numberformat.Format = "dd.MM.yyyy"; } } var dataRange = ws.Cells[ws.Dimension.Address.ToString()]; dataRange.AutoFitColumns(); Response.Clear(); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", "attachment; filename=NameOfExcelFile.xlsx"); Response.BinaryWrite(pck.GetAsByteArray()); } catch (Exception ex) { // log exception throw; } Response.End(); } 

您可以创建.csv文件。 这很快捷,并且可以在excel中打开它。

这篇文章与你的相关:

将DataTable转换为CSV流