it-swarm.com.de

Exportieren Sie DataTable mit EPPlus nach Excel

ich möchte die Datentabelle in eine Excel-Datei mit EPPlus exportieren. Diese Datentabelle verfügt über eine Eigenschaft mit dem Int-Typ. Daher möchte ich in der Excel-Datei das gleiche Format haben. Gibt es eine Möglichkeit, mit diesen eine DataTable nach Excel zu exportieren ?

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

Das sollte den Trick für Sie tun. Wenn Ihre Felder als int definiert sind, wandelt EPPlus die Spalten ordnungsgemäß in eine Zahl oder einen Float um.

126
bastianwegge

und wenn Sie in Browser-Antwort herunterladen möchten

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);                          
}
16
Taran

Um das Excelsheet im Browser herunterzuladen, verwenden Sie HttpContext.Current.Response statt Response. Andernfalls erhalten SieResponse is not available in this context.error

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();

}
4
Kanishka

Hier ist ein Ausschnitt zum Exportieren von DataSet nach 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));
        }
    }

Und mit Aussagen:

using OfficeOpenXml;
using System.Data;
using System.IO;
0
SubqueryCrunch