首页 文章

使用EPPlus将DataTable导出为excel

提问于
浏览
61

我想用EPPlus将数据表导出到excel文件,数据表具有int类型的属性,所以我想在excel文件中,格式相同 . 有谁知道用这些方法将DataTable导出到Excel?

4 回答

  • 0
    using (ExcelPackage pck = new ExcelPackage(newFile))
    {
      ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Accounts");
      ws.Cells["A1"].LoadFromDataTable(dataTable, true);
      pck.Save();
    }
    

    这应该为你做的伎俩 . 如果您的字段定义为int,则EPPlus会将列正确地转换为数字或浮点数 .

  • 15

    如果你想在浏览器响应中下载

    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode("Logs.xlsx", System.Text.Encoding.UTF8));
    
    using (ExcelPackage pck = new ExcelPackage())
    {
        ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Logs");
        ws.Cells["A1"].LoadFromDataTable(dt, true);                 
        var ms = new System.IO.MemoryStream();
        pck.SaveAs(ms);
        ms.WriteTo(Response.OutputStream);                          
    }
    
  • 4

    要在浏览器中下载excelsheet,请使用 HttpContext.Current.Response 而不是 Response ,否则会收到 Response is not available in this context. 错误 . 这是我的代码

    public void ExporttoExcel(DataTable table, string filename)
    {
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.ClearContent();
        HttpContext.Current.Response.ClearHeaders();
        HttpContext.Current.Response.Buffer = true;
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
        HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=GridData.xlsx");
    
    
        using (ExcelPackage pack = new ExcelPackage())
        {
            ExcelWorksheet ws = pack.Workbook.Worksheets.Add(filename);
            ws.Cells["A1"].LoadFromDataTable(table, true);
            var ms = new System.IO.MemoryStream();
            pack.SaveAs(ms);
            ms.WriteTo(HttpContext.Current.Response.OutputStream); 
        }
    
        HttpContext.Current.Response.Flush();
        HttpContext.Current.Response.End();
    
    }
    
  • 122

    这是一个将DataSet导出到Excel的代码段:

    private static void DataSetToExcel(DataSet dataSet, string filePath)
        {
            using (ExcelPackage pck = new ExcelPackage())
            {
                foreach (DataTable dataTable in dataSet.Tables)
                {
                    ExcelWorksheet workSheet = pck.Workbook.Worksheets.Add(dataTable.TableName);
                    workSheet.Cells["A1"].LoadFromDataTable(dataTable, true);
                }
    
                pck.SaveAs(new FileInfo(filePath));
            }
        }
    

    并使用声明:

    using OfficeOpenXml;
    using System.Data;
    using System.IO;
    

相关问题