IRONXLの使用 ASP .NET C# で Excel ファイルをダウンロード: XLSX、CSV などにデータをエクスポート カーティス・チャウ 更新日:2026年3月1日 IronXL をダウンロード NuGet ダウンロード DLL ダウンロード 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る スプレッドシートのエクスポート機能を実装することは、エンタープライズ Web アプリケーションに共通の要件ですが、これらのファイルを生成して配信する手動のプロセスにより、多くの場合、かなりの技術的複雑さが生じます。 開発者は、一貫したブラウザ動作を確保し、データの破損を防ぐために、MemoryStream 管理の微妙な違いを頻繁に把握し、正確な HTTP コンテンツ配置ヘッダーを構成する必要があります。 この記事では、 IronXLライブラリを使用して ASP .NET C# MVC コントローラーで Excel ファイルを作成し、ダウンロードするために必要なすべての手順を説明します。 XLSX形式のExcelファイルへのデータエクスポート、CSVファイルのストリーミング、アップロードデータの変換と再エクスポート、そしてダウンロードしたファイルをブラウザに返す方法を解説します。これらはすべて、Microsoft OfficeのインストールやExcel Interopへの依存なしに実行できます。IronXL IronXLNuGetをインストールして無料トライアルを開始し、ソースコード例に沿って操作してみてください。 購入の準備ができていませんか? PM > Install-Package IronXl.Excel IronXL を NuGet でチェックしてください。1000万回以上のダウンロードで、C#によるPDF開発を変革しています。 また、DLLをダウンロードできます。 コントローラーから Excel ファイルを作成してダウンロードする方法 ASP.NET Coreシナリオで Excel ファイルをダウンロードする場合のコア パターンには、ワークブックを作成し、それをストリームに書き込み、ストリームをファイル応答として返すという 3 つのステップが含まれます。 次のコードは、XLSX ファイルを最初から構築し、ブラウザーにプッシュする完全な MVC コントローラー アクションを示しています。 using IronXL; using Microsoft.AspNetCore.Mvc; public class ReportController : Controller { // Export employee data as a downloadable Excel file public IActionResult DownloadExcel() { // Create a new workbook and worksheet var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.CreateWorkSheet("Employees"); // Add header row with column names worksheet["A1"].Value = "Name"; worksheet["B1"].Value = "Department"; worksheet["C1"].Value = "Salary"; // Populate cells with data values worksheet["A2"].Value = "Alice Torres"; worksheet["B2"].Value = "Engineering"; worksheet["C2"].Value = 95000; worksheet["A3"].Value = "James Park"; worksheet["B3"].Value = "Marketing"; worksheet["C3"].Value = 78000; // Export workbook to a MemoryStream for download var stream = workbook.ToStream(); string filename = "Employees.xlsx"; var content = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; // Return file to the browser with content disposition attachment return File(stream, content, filename); } } using IronXL; using Microsoft.AspNetCore.Mvc; public class ReportController : Controller { // Export employee data as a downloadable Excel file public IActionResult DownloadExcel() { // Create a new workbook and worksheet var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.CreateWorkSheet("Employees"); // Add header row with column names worksheet["A1"].Value = "Name"; worksheet["B1"].Value = "Department"; worksheet["C1"].Value = "Salary"; // Populate cells with data values worksheet["A2"].Value = "Alice Torres"; worksheet["B2"].Value = "Engineering"; worksheet["C2"].Value = 95000; worksheet["A3"].Value = "James Park"; worksheet["B3"].Value = "Marketing"; worksheet["C3"].Value = 78000; // Export workbook to a MemoryStream for download var stream = workbook.ToStream(); string filename = "Employees.xlsx"; var content = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; // Return file to the browser with content disposition attachment return File(stream, content, filename); } } $vbLabelText $csharpLabel Excelファイルを出力する WorkBook.Create メソッドは新しい Excel ドキュメントを生成し、CreateWorkSheet はそれに最初のワークシートを追加します。 セルに値を入力した後、 ToStreamメソッドはブック全体を MemoryStream に変換します。一時ファイルはディスクに保存されません。 コントローラーの File() 戻りメソッドは、コンテンツ配置ヘッダーを添付ファイルに設定し、ブラウザーにファイルをレンダリングするのではなくダウンロードするように指示します。 3 番目のパラメータは、ユーザーのダウンロード ダイアログに表示されるファイル名を制御します。 このパブリック IActionResult パターンは、.NET FrameworkとASP.NET Coreプロジェクトの両方で機能するため、データを Excel にエクスポートする必要がある Web アプリケーションに最適なアプローチとなります。 データベースデータをダウンロード可能なスプレッドシートにエクスポートする方法 実際のシナリオのほとんどは、ハードコードされた値ではなく、データベース テーブルからデータをエクスポートすることを伴います。 パターンは変わりません。データのクエリを実行し、ワークシートにデータを入力し、ファイルを返します。以下は、データベースからレコードを取得してExcelドキュメントに書き込む処理をシミュレートする例です。 using IronXL; using Microsoft.AspNetCore.Mvc; public class DataExportController : Controller { // Export database records to an xlsx file for download public IActionResult ExportDatabaseReport() { // Simulate a database query returning order records var orders = new[] { new { OrderId = 1001, Customer = "Acme Corp", Total = 4500.00m }, new { OrderId = 1002, Customer = "Globex Inc", Total = 12300.50m }, new { OrderId = 1003, Customer = "Initech LLC", Total = 890.75m }, }; var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.CreateWorkSheet("Orders"); // Write headers worksheet["A1"].Value = "Order ID"; worksheet["B1"].Value = "Customer"; worksheet["C1"].Value = "Total"; // Write each row of data from the query results for (int i = 0; i < orders.Length; i++) { int row = i + 2; worksheet[$"A{row}"].Value = orders[i].OrderId; worksheet[$"B{row}"].Value = orders[i].Customer; worksheet[$"C{row}"].Value = orders[i].Total; } var stream = workbook.ToStream(); string filename = $"OrderReport-{DateTime.Now:yyyyMMdd}.xlsx"; return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename); } } using IronXL; using Microsoft.AspNetCore.Mvc; public class DataExportController : Controller { // Export database records to an xlsx file for download public IActionResult ExportDatabaseReport() { // Simulate a database query returning order records var orders = new[] { new { OrderId = 1001, Customer = "Acme Corp", Total = 4500.00m }, new { OrderId = 1002, Customer = "Globex Inc", Total = 12300.50m }, new { OrderId = 1003, Customer = "Initech LLC", Total = 890.75m }, }; var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.CreateWorkSheet("Orders"); // Write headers worksheet["A1"].Value = "Order ID"; worksheet["B1"].Value = "Customer"; worksheet["C1"].Value = "Total"; // Write each row of data from the query results for (int i = 0; i < orders.Length; i++) { int row = i + 2; worksheet[$"A{row}"].Value = orders[i].OrderId; worksheet[$"B{row}"].Value = orders[i].Customer; worksheet[$"C{row}"].Value = orders[i].Total; } var stream = workbook.ToStream(); string filename = $"OrderReport-{DateTime.Now:yyyyMMdd}.xlsx"; return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename); } } $vbLabelText $csharpLabel 出力 運用環境では、注文配列は、Entity Framework Core クエリ、 Dapper呼び出し、または接続文字列を介してデータベースに接続された任意のデータ アクセス レイヤーから取得されます。 ループは結果を反復処理し、各値をワークシート上の正しいセルに書き込みます。 文字列ファイル名に日付スタンプが含まれていることに注意してください。これは、ユーザーがファイルを繰り返しダウンロードするときに頭痛の種になる小さな詳細です。 IronXL のセル アドレス指定システム(worksheet[$"A{row}"]) により読みやすさが維持され、 WorkBook API が有効な XLSX ファイルを内部で構築するための面倒な作業をすべて処理します。 数式、スタイル、または複数シートのブックを含むより複雑なシナリオでも、同じアプローチが適切に拡張されます。 XLSX ではなく CSV ファイルとしてデータをダウンロードするにはどうすればよいでしょうか? 軽量なCSVファイルの方が適している場合もあります。特に、Excelファイルの豊富な機能を必要としない他のシステム、データベース、ツールにデータを入力する場合などです。IronXLを使えば、フォーマットの切り替えが簡単になります。 using IronXL; using Microsoft.AspNetCore.Mvc; public class CsvController : Controller { // Export data as a CSV file download public IActionResult ExportCsv() { var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.CreateWorkSheet("Products"); worksheet["A1"].Value = "SKU"; worksheet["B1"].Value = "Product"; worksheet["C1"].Value = "Price"; worksheet["A2"].Value = "WDG-001"; worksheet["B2"].Value = "Widget Pro"; worksheet["C2"].Value = 29.99; // Convert to CSV stream instead of XLSX var stream = workbook.ToCsvStream(); string filename = "Products.csv"; return File(stream, "text/csv", filename); } } using IronXL; using Microsoft.AspNetCore.Mvc; public class CsvController : Controller { // Export data as a CSV file download public IActionResult ExportCsv() { var workbook = WorkBook.Create(ExcelFileFormat.XLSX); var worksheet = workbook.CreateWorkSheet("Products"); worksheet["A1"].Value = "SKU"; worksheet["B1"].Value = "Product"; worksheet["C1"].Value = "Price"; worksheet["A2"].Value = "WDG-001"; worksheet["B2"].Value = "Widget Pro"; worksheet["C2"].Value = 29.99; // Convert to CSV stream instead of XLSX var stream = workbook.ToCsvStream(); string filename = "Products.csv"; return File(stream, "text/csv", filename); } } $vbLabelText $csharpLabel 出力CSVファイル ToCsvStream メソッドは、最初のワークシートを CSV 形式のMemoryStreamとしてエクスポートします。 CSV ファイルはデータ交換には最適ですが、書式設定、数式、複数シートの構造が削除されます。 これらの機能が必要な場合は、ToStream() または ToXlsxStream() を介して XLSX ファイル形式を使用してください。 形式変換の詳細については、スプレッドシート変換ガイドを参照してください。 アップロードを別の形式で再エクスポートするにはどうすればいいですか? 一般的な Web アプリケーションのシナリオには、ユーザーからアップロードされたファイルを受け入れて別の形式でエクスポートすること (たとえば、XLS アップロードを XLSX に変換したり、元々レガシー形式で保存されたワークブックから CSV ファイルを作成したりすること) が含まれます。 public IActionResult ConvertUpload(IFormFile upload) { using var memoryStream = new MemoryStream(); upload.CopyTo(memoryStream); memoryStream.Position = 0; // Load uploaded Excel file from the stream var workbook = WorkBook.Load(memoryStream); // Re-export as XLSX regardless of the original file extension or file type var stream = workbook.ToXlsxStream(); string filename = Path.GetFileNameWithoutExtension(upload.FileName) + ".xlsx"; return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename); } public IActionResult ConvertUpload(IFormFile upload) { using var memoryStream = new MemoryStream(); upload.CopyTo(memoryStream); memoryStream.Position = 0; // Load uploaded Excel file from the stream var workbook = WorkBook.Load(memoryStream); // Re-export as XLSX regardless of the original file extension or file type var stream = workbook.ToXlsxStream(); string filename = Path.GetFileNameWithoutExtension(upload.FileName) + ".xlsx"; return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename); } $vbLabelText $csharpLabel 出力: CSV を XLSX 形式に変換する WorkBook.Loadメソッドは MemoryStream を受け入れるため、アップロードしたファイルを事前にディスクに保存する必要はありません。ソースが XLS、XLSX、CSV ファイルのいずれであるかを自動検出し、それに応じて解析します。 そこから、ToXlsxStream() は、すべてのバイトが適切に構造化された最新の XLSX 形式で、クリーンな新しい MemoryStream を生成します。 これは、さらに処理または保存する前に、ユーザーの送信を正規化するのに役立ちます。 どのファイル形式をエクスポートできますか? IronXL は、複数のスプレッドシートおよびデータ交換形式へのデータのエクスポートをサポートしています。 以下の表は、利用可能な出力オプションとその最適な使用方法をまとめたものです。 |形式| ファイル拡張子 | ストリーム方式 | 最適なユースケース | |---|---|---|---| | XLSX | .xlsx | ToXlsxStream() | 書式設定と数式を備えた最新の Excel スプレッドシート | | XLS | .xls | ToXlsStream() | レガシーシステムとの互換性 | | CSV | .csv | ToCsvStream() | データベースのインポート、データパイプライン、軽量エクスポート | | XML | .xml | ToXmlStream() | エンタープライズシステム統合 | | JSON | .json | SaveAsJson() | Web APIの応答とデータ交換 | | HTML | .html | HTMLにエクスポート() | スプレッドシートデータのWebページ表示 | すべてのストリーム メソッドは、 ASP.NET Core の File() 戻りヘルパーに直接プラグインする MemoryStream を返します。 byte[] がより便利なシナリオでは、たとえば BLOB データベースに保存する場合や電子メール応答ストリームに添付する場合など、バイト配列の代替 (ToByteArray()) も使用できます。 これらの方法はすべて、 IronXL NuGetパッケージをインストールするとすぐに利用できるようになります。 各エクスポート形式の完全なチュートリアルについては、 Excel へのエクスポートのドキュメントを参照してください。 ビジネス アナリスト向けに XLSX 形式のファイルをダウンロードする、データ エンジニア向けに CSV ファイルをエクスポートする、エンタープライズ統合用に XML を生成するなど、どのような目的であっても、 IronXL は.NET Coreおよび.NET Frameworkアプリケーション全体でコードをクリーンに保ち、出力の信頼性を確保します。 次のプロジェクトでスプレッドシートのエクスポートを出荷する準備はできていますか? 無料の試用ライセンスを入手するか、ライセンス オプションを調べて今すぐ始めましょう。 詳細なセットアップ手順については、 IronXLスタートガイドを参照してください。 よくある質問 C# を使用してASP.NET Coreで Excel ファイルをダウンロードするにはどうすればよいですか? IronXLを利用することで、C# を使ってASP.NET Coreから Excel ファイルをダウンロードできます。IronXLを使用すると、MVC コントローラーから XLSX、CSV、XML などの様々な形式に直接データをエクスポートできます。これは、MemoryStream と File() メソッドを使用することで効率的に管理できます。 Excel ファイルをエクスポートするためにIronXLを使用する利点は何ですか? IronXLは、MemoryStreamを効果的に管理し、HTTPコンテンツ配置ヘッダーを設定することで、Excelファイルのエクスポートプロセスを簡素化します。ブラウザの動作の一貫性を確保し、データの破損を防ぐため、エンタープライズWebアプリケーションに最適です。 IronXLはどのファイル形式にデータをエクスポートできますか? IronXLは、XLSX、CSV、XMLなど、複数のファイル形式にデータをエクスポートできます。この汎用性により、開発者はさまざまなデータエクスポート要件をシームレスに処理できます。 Excel ファイルをエクスポートするときに、 IronXL はどのような技術的な課題を克服するのに役立ちますか? IronXLは、MemoryStream管理や正確なHTTPコンテンツ配置ヘッダーの設定といった課題の解決に役立ちます。これらの機能により、エクスポートされたExcelファイルがブラウザで正しく処理され、データの破損を防ぐことができます。 IronXL はMVC コントローラーからデータをエクスポートするために使用できますか? はい、 IronXLはMVCコントローラーからデータをエクスポートするために使用できます。Excel形式でデータを出力するための簡単な方法を提供するため、 ASP.NET Core Webアプリケーションにとって実用的な選択肢となります。 IronXL はExcel ファイルの生成プロセスをどのように改善しますか? IronXL は、MemoryStream や HTTP ヘッダー管理などの複雑なタスクを自動化することでプロセスを改善し、開発者が技術的な複雑さではなくコア機能に集中できるようにします。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 更新日 2026年3月1日 IronXLを使用してBlazorで Excel ファイルをエクスポートする方法 IronXLを使用してBlazor Server アプリケーションから Excel にデータをエクスポートする方法を学びます。このガイドでは、プロジェクトのセットアップ、サービス設計、条件付き書式、複数シートのレポート、エラー処理について、完全な C# コード例とともに説明します。 詳しく読む 更新日 2026年2月27日 StreamReader の代わりに C# で Excel ファイルを読み取る方法 StreamReader が Excel ファイルを読み取れない理由と、 IronXL を使用して C# .NETのディスクまたはメモリ ストリームから XLSX および XLS ワークブックを読み込む方法について説明します。 詳しく読む 更新日 2026年3月1日 IronXLを使用して C# で Excel ファイルを生成する方法 IronXLを使用して C# で Excel ファイルを生成する方法を学びます。基本的なスプレッドシートの作成、書式設定、数式、および Office に依存せずにデータベース統合について説明します。 詳しく読む Excel で相互運用性なしで C...
更新日 2026年3月1日 IronXLを使用してBlazorで Excel ファイルをエクスポートする方法 IronXLを使用してBlazor Server アプリケーションから Excel にデータをエクスポートする方法を学びます。このガイドでは、プロジェクトのセットアップ、サービス設計、条件付き書式、複数シートのレポート、エラー処理について、完全な C# コード例とともに説明します。 詳しく読む
更新日 2026年2月27日 StreamReader の代わりに C# で Excel ファイルを読み取る方法 StreamReader が Excel ファイルを読み取れない理由と、 IronXL を使用して C# .NETのディスクまたはメモリ ストリームから XLSX および XLS ワークブックを読み込む方法について説明します。 詳しく読む
更新日 2026年3月1日 IronXLを使用して C# で Excel ファイルを生成する方法 IronXLを使用して C# で Excel ファイルを生成する方法を学びます。基本的なスプレッドシートの作成、書式設定、数式、および Office に依存せずにデータベース統合について説明します。 詳しく読む