【问题标题】:Export data table to Excel sheet将数据表导出到 Excel 工作表
【发布时间】:2012-11-23 13:03:55
【问题描述】:

我想将数据表中的数据导出到 Excel 文件。我需要将文件保存在服务器上。我正在为这个项目使用控制台应用程序。

【问题讨论】:

  • 您正在使用控制台应用程序,但您已标记 ASP.NET?
  • 几乎所有的 SQL 包都有一个提取、转换、加载 (ETL) 工具。其中一些可以直接导出到 Excel 文件。您使用的是哪种 SQL 风格?

标签: asp.net excel export-to-excel export-to-csv


【解决方案1】:

由于您没有提到是否安装了 excel,我建议EPPlus 创建 excel 文件。它有一个方便的方法LoadFromDataTable

using (var pck = new ExcelPackage())
{
    var ws = pck.Workbook.Worksheets.Add("Worksheet-Name");
    ws.Cells["A1"].LoadFromDataTable(dataTable1, true, OfficeOpenXml.Table.TableStyles.Medium1);
    using(var fileStream = File.Create(path))
        pck.SaveAs(fileStream);
}

编辑我刚刚看到您标记了 export-to-csv

var lines = dataTable1.AsEnumerable()
    .Select(r => string.Join(",", r.ItemArray));
string csv = string.Join(Environment.NewLine, lines);

File.AppendAllText(path, csv);

【讨论】:

  • 我有一个问题,如何从上面的代码中格式化生成的 Excel 表格。请帮帮我。
  • @Mahesh:CSV 从来没有格式。它是一个逗号分隔的字符串值列表,不多也不少。如果你想要格式,你需要创建一个 Excel 表,例如使用EPPlus,如上所示。
  • 亲爱的蒂姆,我从未忘记你的帮助。谢谢。
【解决方案2】:
if (DtReqDetails != null)
 {
    string attachment = "attachment; filename=History.xls";
    Response.ClearContent();
    Response.AddHeader("content-disposition", attachment);
    Response.ContentType = "application/vnd.ms-excel";
    string tab = "";
    foreach (DataColumn dc in DtReqDetails.Columns)
    {
      Response.Write(tab + dc.ColumnName);
      tab = "\t";
    }
    Response.Write("\n");
    int i;
    foreach (DataRow dr in DtReqDetails.Rows)
   {
      tab = "";
      for (i = 0; i < DtReqDetails.Columns.Count; i++)
       {
        Response.Write(tab + dr[i].ToString());
        tab = "\t";
       }
       Response.Write("\n");
   }
   Response.End();
  }

【讨论】:

    【解决方案3】:

    如果您使用的是 MS SQL,那么他们有一个内置的 procedure 用于将表格导出到 Excel 电子表格。无需编码。

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 2021-06-19
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 2019-05-25
      相关资源
      最近更新 更多