この質問は、ASP.NET MVC アプリケーションから Excel にデータをエクスポートすることに焦点を当てています。提供されているガイドでは HTML から Excel への変換アプローチを提案していますが、この記事では、適切な Excel ファイルを作成するための Excel パッケージ ライブラリである EPPlus の使用について説明します。
EPPlus のサービスLoadFromDataTable や LoadFromCollection などのメソッドを使用して、Excel 範囲にデータを設定します。 Excel ファイルの作成例を次に示します。
using (ExcelPackage package = new ExcelPackage()) { var ws = package.Workbook.Worksheets.Add("My Sheet"); 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); }
EPPlus では、エクスポートされたデータに表スタイルを書式設定して適用できます。例:
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);
ストリーム処理の問題を回避するために、カスタム FileResult クラスを作成して EPPlus パッケージの応答を管理できます:
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) { 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 を使用して ASP.NET MVC アプリケーションから Excel にデータを効率的にエクスポートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。