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をコピー 記事をメールで送る スプレッドシートのエクスポート機能を実装することは、EnterpriseWebアプリケーションにおいて一般的な要件ですが、これらのファイルを生成して配信する手作業のプロセスは、しばしば大きな技術的な複雑さを伴います。 開発者は、ブラウザの一貫した動作を確保し、データの破損を防ぐために、MemoryStream管理の微妙な点を理解し、正確なHTTPコンテンツ配置ヘッダーを設定する必要がある。 この記事では、 IronXLライブラリを使用して.NET C# MVCコントローラーでExcelファイルを作成およびダウンロードするために必要なすべての手順を説明します。 本稿では、Microsoft Officeをインストールしたり、Excel Interopに頼ったりすることなく、データをXLSX形式のExcelファイルにエクスポートする方法、CSVファイルをストリーミングする方法、アップロードしたデータを再エクスポート用に変換する方法、ダウンロードしたファイルをブラウザに返す方法などを解説します。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); } } Imports IronXL Imports Microsoft.AspNetCore.Mvc Public Class ReportController Inherits Controller ' Export employee data as a downloadable Excel file Public Function DownloadExcel() As IActionResult ' Create a new workbook and worksheet Dim workbook = WorkBook.Create(ExcelFileFormat.XLSX) Dim 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 Dim stream = workbook.ToStream() Dim filename As String = "Employees.xlsx" Dim content = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ' Return file to the browser with content disposition attachment Return File(stream, content, filename) End Function End Class $vbLabelText $csharpLabel 出力Excelファイル WorkBook.Create メソッドは新しい Excel ドキュメントを生成し、CreateWorkSheet メソッドは最初のワークシートをそのドキュメントに追加します。 セルに値を入力した後、 ToStreamメソッドはワークブック全体を MemoryStream に変換します。一時ファイルはディスクに書き込まれません。 コントローラの File() メソッドは、コンテンツディスポジション ヘッダーを attachment に設定します。これにより、ブラウザはファイルをレンダリングしようとするのではなく、ダウンロードするように指示されます。 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); } } Imports IronXL Imports Microsoft.AspNetCore.Mvc Public Class DataExportController Inherits Controller ' Export database records to an xlsx file for download Public Function ExportDatabaseReport() As IActionResult ' Simulate a database query returning order records Dim orders = New() { New With {.OrderId = 1001, .Customer = "Acme Corp", .Total = 4500.0D}, New With {.OrderId = 1002, .Customer = "Globex Inc", .Total = 12300.5D}, New With {.OrderId = 1003, .Customer = "Initech LLC", .Total = 890.75D} } Dim workbook = WorkBook.Create(ExcelFileFormat.XLSX) Dim 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 i As Integer = 0 To orders.Length - 1 Dim row As Integer = i + 2 worksheet($"A{row}").Value = orders(i).OrderId worksheet($"B{row}").Value = orders(i).Customer worksheet($"C{row}").Value = orders(i).Total Next Dim stream = workbook.ToStream() Dim filename As String = $"OrderReport-{DateTime.Now:yyyyMMdd}.xlsx" Return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename) End Function End Class $vbLabelText $csharpLabel 出力 本番環境では、orders配列は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); } } Imports IronXL Imports Microsoft.AspNetCore.Mvc Public Class CsvController Inherits Controller ' Export data as a CSV file download Public Function ExportCsv() As IActionResult Dim workbook = WorkBook.Create(ExcelFileFormat.XLSX) Dim 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 Dim stream = workbook.ToCsvStream() Dim filename As String = "Products.csv" Return File(stream, "text/csv", filename) End Function End Class $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); } Imports Microsoft.AspNetCore.Mvc Imports System.IO Public Function ConvertUpload(upload As IFormFile) As IActionResult Using memoryStream As New MemoryStream() upload.CopyTo(memoryStream) memoryStream.Position = 0 ' Load uploaded Excel file from the stream Dim workbook = WorkBook.Load(memoryStream) ' Re-export as XLSX regardless of the original file extension or file type Dim stream = workbook.ToXlsxStream() Dim filename As String = Path.GetFileNameWithoutExtension(upload.FileName) & ".xlsx" Return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename) End Using End Function $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() | Enterpriseシステム統合 | | JSON | .json | SaveAsJson() | Web APIの応答とデータ交換 | | HTML | .html | ExportToHml() | スプレッドシートデータのウェブページ表示 | すべてのストリームメソッドは、 ASP.NET CoreのFile()戻り値ヘルパーに直接接続できるMemoryStreamを返します。 バイト配列を使用する代替手段(ToByteArray())も利用可能です。これは、例えばブロブデータベースに保存する場合や、電子メールの応答ストリームに添付する場合など、バイト配列の方が便利なシナリオで使用できます。 これらのメソッドはすべて、 IronXL NuGetパッケージをインストールした直後から利用可能です。 各エクスポート形式の詳細な手順については、 Excelへのエクスポートに関するドキュメントを参照してください。 ビジネスアナリスト向けにXLSX形式でファイルをダウンロードする場合でも、データエンジニア向けにCSVファイルをエクスポートする場合でも、Enterprise統合向けに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 に依存せずにデータベース統合について説明します。 詳しく読む