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

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

Patricia Arquette
Patricia Arquette원래의
2025-01-05 21:30:41364검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.