データを Excel にエクスポートする方法
提供されているガイドでは、テーブルを含む HTML ファイルを生成するための回避策が示されていますが、このアプローチは次のような場合には信頼できません。 Excel はこれらのファイルを解釈してインポートします。より効果的な方法は、EPPlus などのライブラリを使用して専用の Excel ファイルを作成することです。
EPPlus の使用
EPPlus には、Excel 範囲を設定するための LoadFromDataTable メソッドと LoadFromCollection メソッドが用意されています。それぞれ、データ テーブルまたは汎用コレクションのデータを使用します。列またはプロパティ名は、読み込み中にヘッダーとして機能します。
コード例:
public ActionResult ExportData() { DataTable dataTable = GetData(); // Method to retrieve data using (ExcelPackage package = new ExcelPackage()) { var ws = package.Workbook.Worksheets.Add("My Sheet"); ws.Cells["A1"].LoadFromDataTable(dataTable, true); // Load with true to include headers 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); } }
書式設定とスタイル:
データがロードされたら、Excel をさらにカスタマイズしてスタイルを設定できます範囲:
var range = ws.Cells["A1"].LoadFromDataTable(table); range.Style.Numberformat.Format = "#,##0.00"; // Set number format range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right; // Set horizontal alignment
出力のカスタマイズ:
大きなファイルを作成する際の潜在的な問題を軽減したり、重複書き込みを回避したりするには、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) { using (Package) { Package.SaveAs(response.OutputStream); } } }
このカスタム結果はコントローラーで使用できます。 action:
public FileResult ExportData() { ExcelPackage package = new ExcelPackage(); var ws = package.Workbook.Worksheets.Add("My Sheet"); ... // Load and format data return new EpplusResult(package) { FileDownloadName = "SomeFile.xlsx" }; }
このアプローチにより、出力ストリームへの直接書き込みが保証され、大きなファイルのパフォーマンスが最適化されます。
以上がEPPlus を使用してデータを Excel に効率的にエクスポートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。