UFO ET IT

EPPlus를 사용하여 DataTable을 Excel로 내보내기

ufoet 2020. 11. 16. 23:17
반응형

EPPlus를 사용하여 DataTable을 Excel로 내보내기


EPPlus를 사용하여 데이터 테이블을 Excel 파일로 내보내고 싶습니다. 해당 데이터 테이블에는 int 유형의 속성이 있으므로 Excel 파일에서 동일한 형식을 원합니다.

누구든지 이와 같은 DataTable을 Excel로 내보내는 방법을 알고 있습니까?


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

그것은 당신을 위해 트릭을 할 것입니다. 필드가 int로 정의되면 EPPlus는 열을 숫자 또는 부동으로 적절하게 캐스팅합니다.


브라우저 응답으로 다운로드하려면

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

브라우저 사용에서 엑셀 시트를 다운로드 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();

}

다음은 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;

참고 URL : https://stackoverflow.com/questions/13669733/export-datatable-to-excel-with-epplus

반응형