>백엔드 개발 >C++ >적절한 MIME 유형 및 형식을 사용하여 DataTable 데이터를 Excel(.xlsx) 파일로 내보내는 방법은 무엇입니까?

적절한 MIME 유형 및 형식을 사용하여 DataTable 데이터를 Excel(.xlsx) 파일로 내보내는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-05 21:18:45808검색

How to Export DataTable Data to an Excel (.xlsx) File with Proper MIME Type and Formatting?

적절한 방법을 사용하여 테이블 데이터를 Excel로 내보내고 Excel(xlsx) 파일에 대한 올바른 MIME 유형을 설정하려면 어떻게 해야 합니까?

제공된 가이드에서는 Excel 파일을 만드는 방법을 보여주지 않습니다. 대신 테이블이 포함된 HTML 파일을 생성하는 해결 방법을 사용합니다. 기본 설정을 따르지 않는 테이블이 포함된 CSV 또는 HTML 파일을 가져오려고 하면 Excel에서 서식 오류가 발생할 수 있습니다.

EPPlus를 사용하면 정품 Excel 파일을 만드는 것이 훨씬 더 간단합니다. EPPlus의 LoadFromDataTable 및 LoadFromCollection을 사용하면 DataTable 또는 일반 컬렉션의 데이터로 Excel 범위를 채울 수 있습니다. 헤더는 각각 열 또는 속성 이름을 사용하여 생성됩니다.

public ActionResult ExportData()
{
    // Load data into 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;

또한 , 범위에 표 스타일을 적용할 수 있습니다:

ws.Cells[1,1].LoadFromDataTable(table, true, TableStyles.Light1);

서식, 수식, 피벗 테이블 및 테이블 처리는 모두 라이브러리의 GitHub 위키에서 찾을 수 있습니다.

MemoryStream에 저장하는 것은 중복된 데이터 쓰기(메모리 및 출력 스트림에 대한)로 인해 더 큰 시트에 적합하지 않을 수 있습니다. 그러나 MVC 작업에서 직접 FileResult를 반환하는 것은 권장되지 않습니다. 해결책은 EPPlus 패키지에 맞게 조정된 FileResult를 생성하는 것입니다.

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

    public ExcelPackage Package { get; private set; }

    protected override void WriteFile(HttpResponseBase response)
    {
        Package.SaveAs(response.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"};
}

위 내용은 적절한 MIME 유형 및 형식을 사용하여 DataTable 데이터를 Excel(.xlsx) 파일로 내보내는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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