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