【问题标题】:Inserting data into an excel sheet from a DataTable将数据从 DataTable 插入到 Excel 工作表中
【发布时间】:2012-05-19 19:54:25
【问题描述】:

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

【问题讨论】:

  • @Parminder 在此处的 excel 电子表格是现有电子表格,或者您正在创建一个新电子表格。如果您正在创建新工作表,您还可以使用 NPOI
  • @Vinay 我希望动态创建工作表。

标签: c# asp.net


【解决方案1】:

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

那么就很简单了。假设你有一个按钮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();
}

【讨论】:

    【解决方案2】:

    您可以创建一个 .csv 文件。这既快速又简单,并且可以在 excel 中打开它。

    这篇文章与你的相关:

    Convert DataTable to CSV stream

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-08
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 2015-04-03
      相关资源
      最近更新 更多