> 백엔드 개발 > C++ > EPPlus를 사용하여 데이터를 Excel 파일로 효율적으로 내보내는 방법은 무엇입니까?

EPPlus를 사용하여 데이터를 Excel 파일로 효율적으로 내보내는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-05 21:30:41
원래의
337명이 탐색했습니다.

How to Efficiently Export Data to an Excel File Using EPPlus?

Excel로 어떻게 내보내나요?

가이드에서는 Excel 파일을 만드는 방법을 보여주지 않고 테이블을 사용하여 HTML 파일을 만드는 방법을 보여줍니다. . Excel은 종종 실패할 수 있는 기본 설정을 사용하여 테이블이 포함된 csv 또는 HTML 파일을 가져오려고 시도합니다.

EPPlus와 같은 라이브러리를 사용하여 적절한 Excel 파일을 만드는 것이 훨씬 쉽습니다.
I 이전에 답변을 받은 적이 있다고 확신하지만 데이터에서 Excel 파일을 생성하는 방법과 xlsx에 대한 적절한 콘텐츠 유형을 설정하는 방법을 모두 보여주는 답변을 찾을 수 없습니다. file.

EPPlus는 DataTable 또는 일반 컬렉션에서 가져온 데이터로 Excel 범위를 채우는 LoadFromDataTable 및 LoadFromCollection 메서드를 제공합니다. 열 또는 속성 이름은 각각 헤더로 사용됩니다.

public ActionResult ExportData()
{

    //Somehow, load data to a DataTable

    using (ExcelPackage package = new ExcelPackage())
    {
        var ws = package.Workbook.Worksheets.Add("My Sheet");
        //true generates headers
        ws.Cells["A1"].LoadFromDataTable(dataTable, true);

        var stream = new MemoryStream();
        package.SaveAs(stream);

        string fileName = "myfilename.xlsx";
        string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

        stream.Position = 0;
        return File(stream, contentType, fileName);
    }
}
로그인 후 복사

LoadFromDataTable 또는 LoadFromCollection은 테이블 형식을 지정하는 데 사용할 수 있는 Excel 셀 범위를 반환합니다.

var range=ws.Cells["A1"].LoadFromDataTable(table);
range.Style.Numberformat.Format = "#,##0.00";
range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;
로그인 후 복사

또한 적용할 수도 있습니다. 테이블 스타일을 범위에 전달하거나 원하는 스타일을 LoadFromDataTable 또는 LoadFromCollection에 전달합니다. 예:

ws.Cells[1,1].LoadFromDataTable(table, true, TableStyles.Light1);
로그인 후 복사

라이브러리의 Gitup 위키는 결과 형식 지정, 수식 생성, 피벗 테이블 생성, 테이블 처리 등을 보여줍니다.

만들기를 원하는 경우 MemoryStream에 저장하는 것이 문제가 될 수 있습니다. 비교적 큰 시트. 동일한 데이터를 두 번(MemoryStream에 한 번 쓴 다음 출력에 복사하면) 사이클이 낭비됩니다. 하지만 MVC 작업에서 출력 스트림에 직접 쓰는 것은 나쁜 습관입니다. 비결은 EPPlus 패키지를 처리하고 File에서 반환된 FileResult 대신 이를 반환하는 사용자 정의 FileResult를 생성하는 것입니다. 예:

public class EpplusResult:FileResult
{
    public EpplusResult(ExcelPackage package)
        : base("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
    {
        if (package == null)
        {
            throw new ArgumentNullException("package");
        }

        Package = package;
    }

    public ExcelPackage Package { get; private set; }

    protected override void WriteFile(HttpResponseBase response)
    {
        // grab chunks of data and write to the output stream
        Stream outputStream = response.OutputStream;
        using (Package)
        {
            Package.SaveAs(outputStream);
        }
    }
}
로그인 후 복사

이를 통해 다음 작업을 작성할 수 있습니다.

public FileResult ExportData()
{

    ExcelPackage package = new ExcelPackage();
    var ws = package.Workbook.Worksheets.Add("My Sheet");       
    ...
    ws.Cells[1,1].LoadFromDataTable(table, true, TableStyles.Light1);

    return new EpplusResult(package){FileDownloadName = "SomeFile.xlsx"};
}
로그인 후 복사

위 내용은 EPPlus를 사용하여 데이터를 Excel 파일로 효율적으로 내보내는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿