加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 19:51:05 所属栏目:百科 来源:网络整理
导读:我正在寻找一种方法来创建,修改,读取C#中的.xlsx文件,而无需安装Excel或在服务器上创建文件,然后再提供给用户下载. 我发现NPOI http://npoi.codeplex.com/看起来很棒但支持.xls而不是.xlsx 我发现ExcelPackage http://excelpackage.codeplex.com/看起来很棒
我正在寻找一种方法来创建,修改,读取C#中的.xlsx文件,而无需安装Excel或在服务器上创建文件,然后再提供给用户下载.

我发现NPOI http://npoi.codeplex.com/看起来很棒但支持.xls而不是.xlsx

我发现ExcelPackage http://excelpackage.codeplex.com/看起来很棒但是在将服务器发送给用户之前在服务器上创建文件会产生额外的开销.
有没有人知道这方面的方法?

我找到了EPPlus http://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;
    }
  }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读