C# 创建/修改/读取 .xlsx 文件

2023-11-22

我正在寻找一种在 C# 中创建、修改、读取 .xlsx 文件的方法,而无需安装 Excel 或在服务器上创建文件,然后再提供给用户下载。

我找到了NPOIhttp://npoi.codeplex.com/看起来不错,但支持 .xls 而不是 .xlsx

我找到了 ExcelPackagehttp://excelpackage.codeplex.com/看起来不错,但在将文件发送给用户之前需要在服务器上创建文件,需要额外的开销。 有谁知道解决这个问题的方法吗?

我找到了EPPlushttp://epplus.codeplex.com但我不确定这是否需要在服务器上创建文件才能将其发送给用户?

我对此很陌生,因此非常感谢任何指导/示例等。


使用 EPPlus,不需要创建文件,您可以使用流完成所有操作,下面是 ASP.NET ashx 处理程序的示例,它将将数据表导出到 Excel 文件并将其返回给客户端:

  public class GetExcel : IHttpHandler
  {
    public void ProcessRequest(HttpContext context)
    {
      var dt = DBServer.GetDataTable("select * from table");
      var ms = GetExcel.DataTableToExcelXlsx(dt, "Sheet1");
      ms.WriteTo(context.Response.OutputStream);
      context.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
      context.Response.AddHeader("Content-Disposition", "attachment;filename=EasyEditCmsGridData.xlsx");
      context.Response.StatusCode = 200;
      context.Response.End();   
    }

    public bool IsReusable
    {
      get
      {
        return false;
      }
    }

    public static MemoryStream DataTableToExcelXlsx(DataTable table, string sheetName)
    {
      var result = new MemoryStream();
      var pack = new ExcelPackage();
      var ws = pack.Workbook.Worksheets.Add(sheetName);

      int col = 1;
      int row = 1;
      foreach (DataRow rw in table.Rows)
      {
        foreach (DataColumn cl in table.Columns)
        {
          if (rw[cl.ColumnName] != DBNull.Value)
            ws.Cells[row, col].Value = rw[cl.ColumnName].ToString();
          col++;
        }
        row++;
        col = 1;
      }
      pack.SaveAs(result);
      return result;
    }
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 创建/修改/读取 .xlsx 文件 的相关文章

随机推荐