
.NET Core用 Excel API の構築: XLSX ファイルの作成、読み取り、エクスポート
IronXLを使えば、.NET Core用のExcel APIを簡単に構築できます。 パッケージをインストールし、WorkBookを作成して、セルに値を入力し、ストリームを直接返します。Microsoft Officeは必要ありません。
IronXLは、XLSXファイルの作成、データのインポート、複数フォーマットのエクスポート、セルのスタイル設定をすべてマネージド.NETコードで処理します。 Windows、Linux、macOSで動作するため、プログラムによるExcelサポートを必要とするあらゆるASP.NET Core APIにとって実用的な選択肢となります。
.NET CoreプロジェクトにIronXLをインストールするにはどうすればよいですか?
NuGetパッケージマネージャーコンソールを使用して、任意 for .NET 10プロジェクトにIronXLを追加します。
または、Visual Studio NuGet UI でIronXLを検索してインストールすることもできます。 NuGetでのパッケージ名はIronXL.Excelです。
インストール後、using IronXL;をワークブックを作成または読み込むファイルに追加します。 ホストマシンには、Office相互運用ライブラリ、COM登録、Microsoft Excelのインストールは一切不要です。IronXLは完全に自己完結型です。
IronXLは.NET Standard 2.0以降を対象としているため、同じライブラリが.NET Core、 .NET 5/6/7/8/9/10、および.NET Frameworkプロジェクトで動作します。 IronXLのドキュメントには、サポートされているすべての環境について詳細に記載されています。
.NET Coreでプログラムを使ってExcelファイルを作成する方法を教えてください
IronXLの直感的なAPIを使えば、わずか数行のコードでExcelドキュメントをゼロから作成できます。 このライブラリは、洗練されたオブジェクトモデルを通じて、ワークブック、ワークシート、セルスタイル、および数式を完全に制御できます。
以下は、書式設定されたデータを含む新しい Excel ワークブックを作成し、ワークシート管理のデモンストレーションを行い、セル スタイルを適用するコントローラー アクションです。
using IronXL;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/[controller]")]
public class ExcelController : ControllerBase
{
[HttpGet("create-report")]
public IActionResult CreateSalesReport()
{
// Create a new Excel workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("Sales Data");
// Set header labels in the first row
worksheet["A1"].Value = "Product";
worksheet["B1"].Value = "Q1 Sales";
worksheet["C1"].Value = "Q2 Sales";
worksheet["D1"].Value = "Total";
// Bold headers and apply a blue background with white text
worksheet["A1:D1"].Style.Font.Bold = true;
worksheet["A1:D1"].Style.SetBackgroundColor("#4472C4");
worksheet["A1:D1"].Style.Font.SetColor("#FFFFFF");
// Add data rows
worksheet["A2"].Value = "Widget Pro";
worksheet["B2"].Value = 15000;
worksheet["C2"].Value = 18500;
worksheet["D2"].Formula = "=B2+C2";
worksheet["A3"].Value = "Gadget Plus";
worksheet["B3"].Value = 22000;
worksheet["C3"].Value = 24000;
worksheet["D3"].Formula = "=B3+C3";
// Apply currency number format to sales columns
worksheet["B2:D3"].Style.Format = "$#,##0";
// Stream the XLSX file back to the caller
var stream = workbook.ToStream();
return File(
stream,
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"SalesReport.xlsx");
}
}Imports IronXL
Imports Microsoft.AspNetCore.Mvc
<ApiController>
<Route("api/[controller]")>
Public Class ExcelController
Inherits ControllerBase
<HttpGet("create-report")>
Public Function CreateSalesReport() As IActionResult
' Create a new Excel workbook in XLSX format
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim worksheet As WorkSheet = workbook.CreateWorkSheet("Sales Data")
' Set header labels in the first row
worksheet("A1").Value = "Product"
worksheet("B1").Value = "Q1 Sales"
worksheet("C1").Value = "Q2 Sales"
worksheet("D1").Value = "Total"
' Bold headers and apply a blue background with white text
worksheet("A1:D1").Style.Font.Bold = True
worksheet("A1:D1").Style.SetBackgroundColor("#4472C4")
worksheet("A1:D1").Style.Font.SetColor("#FFFFFF")
' Add data rows
worksheet("A2").Value = "Widget Pro"
worksheet("B2").Value = 15000
worksheet("C2").Value = 18500
worksheet("D2").Formula = "=B2+C2"
worksheet("A3").Value = "Gadget Plus"
worksheet("B3").Value = 22000
worksheet("C3").Value = 24000
worksheet("D3").Formula = "=B3+C3"
' Apply currency number format to sales columns
worksheet("B2:D3").Style.Format = "$#,##0"
' Stream the XLSX file back to the caller
Dim stream = workbook.ToStream()
Return File(
stream,
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"SalesReport.xlsx")
End Function
End Class出力Excelファイル

WorkBook.Create()はXLSXおよびXLSフォーマットの両方をサポートしています。 CreateWorkSheet()メソッドは、値でセルを埋め、Excelの計算式を適用し、セル範囲でレイアウトを制御する名前付きシートを追加します。 IronXLの計算エンジンは、ワークブックのデータが変更されると数式を自動的に評価します。これには、より複雑なデータ分析シナリオで使用される配列数式のサポートも含まれます。
セルスタイルは、大胆さや色使いだけにとどまらない。 セル書式設定APIを使用すると、COMレイヤーに触れることなく、数値形式、罫線、配置、フォントサイズなどを設定できます。 これにより、ディスプレイコンテキストが存在しないコンテナ化されたLinux環境内でも安全に実行できます。
ワークブックに複数のワークシートを追加するにはどうすればよいですか?
1つのワークブックには、任意の数のワークシートを含めることができます。 必要な各タブごとにworkbook.CreateWorkSheet("SheetName")を呼び出します。 ワークシートは、workbook.WorkSheets[0]でインデックスから後でアクセス可能です。
このパターンは、概要と詳細の両方を含むレポートを作成する際に便利です。1つのシートに集計合計値が格納され、子シートには取引の生データが格納されます。 ワークシート管理に関するドキュメントでは、実行時にシートの名前変更、並べ替え、および削除を行う手順を説明しています。
Web APIでExcelデータを読み込む最適な方法は何ですか?
ユーザーがアップロードしたExcelファイルからデータをインポートすることは、スプレッドシートコンテンツを処理するあらゆるWebアプリケーションにとって不可欠です。 IronXLを使えば、Excelスプレッドシートを直接読み込むことができます。ストリームから読み込み、行を反復処理し、各セルから入力された値を取り出すことができます。
[HttpPost("import")]
public IActionResult ImportExcelData(IFormFile file)
{
if (file == null || file.Length == 0)
return BadRequest("No file uploaded");
using var stream = file.OpenReadStream();
// Load the workbook directly from the upload stream
WorkBook workbook = WorkBook.Load(stream);
WorkSheet worksheet = workbook.DefaultWorkSheet;
var records = new List<Dictionary<string, object>>();
// Start at row 2 to skip the header row
for (int row = 2; row <= worksheet.RowCount; row++)
{
var record = new Dictionary<string, object>
{
["Product"] = worksheet[$"A{row}"].StringValue,
["Sales"] = worksheet[$"B{row}"].DecimalValue,
["Date"] = worksheet[$"C{row}"].DateTimeValue
};
records.Add(record);
}
return Ok(new {
message = "Import successful",
recordCount = records.Count,
data = records
});
}Imports Microsoft.AspNetCore.Mvc
Imports System.Collections.Generic
Imports IronXL
<HttpPost("import")>
Public Function ImportExcelData(file As IFormFile) As IActionResult
If file Is Nothing OrElse file.Length = 0 Then
Return BadRequest("No file uploaded")
End If
Using stream = file.OpenReadStream()
' Load the workbook directly from the upload stream
Dim workbook As WorkBook = WorkBook.Load(stream)
Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
Dim records As New List(Of Dictionary(Of String, Object))()
' Start at row 2 to skip the header row
For row As Integer = 2 To worksheet.RowCount
Dim record As New Dictionary(Of String, Object) From {
{"Product", worksheet($"A{row}").StringValue},
{"Sales", worksheet($"B{row}").DecimalValue},
{"Date", worksheet($"C{row}").DateTimeValue}
}
records.Add(record)
Next
Return Ok(New With {
.message = "Import successful",
.recordCount = records.Count,
.data = records
})
End Using
End Function出力

WorkBook.Load()はストリーム、ファイルパス、またはバイト配列からExcelファイルを開きます。 セルはworksheet["A1"]インデクサー構文を通じて、または名前付きセル範囲を反復することでアクセスされます。 IronXLはデータ検証を自動的に処理し、型安全なアクセサーを公開します -- StringValue -- これにより、消費コードがクリーンで予測可能なまま保たれます。
インポートしたデータのフィルタリングと並べ替えはどのように行いますか?
ワークブックをロードした後、いずれかの.SortDescending()を呼び出して行をソートします。 フィルタリングを行うには、セルを反復処理して条件をインラインで評価するか、データをLINQコレクションに転送してさらに処理します。 並べ替えとフィルタリングのガイドでは、両方のアプローチを具体的な例を用いて解説しています。
大容量ファイルのアップロードに対応していますか? IronXLはアクセスされたセルのみを読み込むため、特定の列を照会する前に数メガバイトのファイル全体をメモリに読み込む必要はありません。 この遅延アクセス方式により、数万行のデータを含むワークブックを処理する場合でも、メモリ使用量を安定させることができます。
Excelデータをさまざまな形式にエクスポートするにはどうすればよいですか?
アプリケーションは、スプレッドシートを複数の出力形式で提供する必要がある場合が多い。 IronXLは、外部変換ツールを必要とせず、単一のメソッド呼び出しでXLSX、XLS、CSV、JSON、およびHTMLへのエクスポートをサポートしています。
[HttpGet("export/{format}")]
public IActionResult ExportData(string format)
{
// Load a pre-designed template workbook
WorkBook workbook = WorkBook.Load("template.xlsx");
return format.ToLower() switch
{
"xlsx" => File(
workbook.ToStream(),
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"export.xlsx"),
"csv" => File(
workbook.ToStream(FileFormat.CSV),
"text/csv",
"export.csv"),
"json" => Ok(workbook.ToJson()),
_ => BadRequest("Unsupported format")
};
}Imports Microsoft.AspNetCore.Mvc
<HttpGet("export/{format}")>
Public Function ExportData(format As String) As IActionResult
' Load a pre-designed template workbook
Dim workbook As WorkBook = WorkBook.Load("template.xlsx")
Select Case format.ToLower()
Case "xlsx"
Return File(workbook.ToStream(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "export.xlsx")
Case "csv"
Return File(workbook.ToStream(FileFormat.CSV), "text/csv", "export.csv")
Case "json"
Return Ok(workbook.ToJson())
Case Else
Return BadRequest("Unsupported format")
End Select
End Functionあらかじめレイアウトが定義されたExcelテンプレートを使用すると、レポート作成が迅速化されます。 あらかじめデザインされたワークブックを読み込み、動的なデータを名前付きセルまたは範囲に入力し、その結果をストリーミング配信します。 この方法は、柔軟性よりも一貫した書式が重要な売上報告書、請求書、コンプライアンス文書などに適しています。
IronXLはクロスプラットフォームに対応しているため、これらのファイル操作はWindows、Linux、macOSのいずれのプラットフォームでも同じように動作し、 .NET Coreのコンテナ化されたデプロイメントに適しています。 IronXLのクロスプラットフォームガイドで詳細をご覧ください。
.NET Core API から CSV 形式でエクスポートするにはどうすればよいですか?
上記のように、text/csvコンテンツタイプと共に返します。 複数シートのワークブックの場合、各シートは.ToStream(FileFormat.CSV)を呼び出すことによって個別にエクスポートできます。 CSVエクスポートのドキュメントは、デリミター、エンコーディング、および日付フォーマット設定オプションの処理をカバーしています。
条件付き書式とデータバーはどのように適用するのですか?
IronXLは、基本的なセルスタイルに加えて、条件付き書式設定ルールをサポートしています。例えば、しきい値を超えるセルを緑色で強調表示したり、負の値を赤色で表示したり、グラデーションデータバーを適用して、別のツールで後処理を行うことなく、スプレッドシート上で傾向を即座に視覚化できます。
条件付き書式設定は、読者が異常値を一目で把握する必要がある財務ダッシュボードやKPIレポートにおいて特に有効です。 ダウンロード後に受信者が独自の書式設定を適用するのではなく、書式設定ルールはXLSXファイルに埋め込まれた状態で送信され、Microsoft Excelのどのバージョンでも、または互換性のあるビューアでファイルが開かれると自動的に評価されます。
条件付きフォーマットはワークシートのConditionalFormattingプロパティを通じて設定されます。 ルールは指定されたセル範囲に適用され、セル値の比較、数式に基づくルール、値を低から高まで段階的に表示するカラースケール、セル内棒グラフのように機能するデータバーオーバーレイなど、複数の条件タイプをサポートします。 Open XML仕様は、 IronXLがXLSXファイルに書き込む際の基本的なルール構造を定義しています。
カラー スケール、アイコン セット、およびデータ バーを適用する完全なリファレンスについては、IronXLドキュメントの条件付き書式設定チュートリアルを参照してください。
Excelファイルとワークシートを保護するにはどうすればよいですか?
機密データを含むレポートを配布するには、アクセス制御の仕組みが必要となる。 IronXLは、ワークブックレベルのパスワード保護とワークシートレベルの保護の両方をサポートしています。
- ワークブックのパスワード: XLSXファイルを暗号化する前に
.SaveAs()を呼び出します。受信者は、Excelで開くためにパスワードを入力する必要があります。 - ワークシートの保護: セルの編集をロックしつつ、シートを表示可能にするために
worksheet.ProtectSheet("password")を呼び出します。 特定の範囲はAllowEditRangeAPIを使用してデータ入力用にロック解除できます。 -読み取り専用配布:絶対に編集してはいけない文書については、ワークシート保護とファイルレベルの暗号化を組み合わせます。
パスワードで保護されたXLSXファイルは、デフォルトでAES-128暗号化を使用します。これは、Excelが標準で採用している暗号化方式と同じです。 つまり、 IronXLで保護されたファイルは、Excelに組み込まれているファイルを開くプロンプトと完全に互換性があり、受信側で特別なビューアは必要ありません。
これらのセキュリティ機能は、標準 for .NET Coreセキュリティモデルを補完するものであり、特に財務や人事関連のレポートエンドポイントを構築する際に役立ちます。 ファイル保護に関するドキュメントは、完全なAPIリファレンスを提供します。
.NETでExcelの数式を扱うにはどうすればよいですか?
IronXLの内蔵計算エンジンは、実行時に標準のExcel数式を評価するため、ディスクに保存してExcelを再度開かずに計算済みの値をAPIが返せます。任意のセルの.Formulaプロパティに数式文字列を割り当てます。
// Sum a column and place the result in a footer row
worksheet[$"B{lastRow}"].Formula = $"=SUM(B2:B{lastRow - 1})";
// Calculate an average across a range
worksheet[$"C{lastRow}"].Formula = $"=AVERAGE(C2:C{lastRow - 1})";
// Retrieve the computed value immediately
decimal total = worksheet[$"B{lastRow}"].DecimalValue;' Sum a column and place the result in a footer row
worksheet($"B{lastRow}").Formula = $"=SUM(B2:B{lastRow - 1})"
' Calculate an average across a range
worksheet($"C{lastRow}").Formula = $"=AVERAGE(C2:C{lastRow - 1})"
' Retrieve the computed value immediately
Dim total As Decimal = worksheet($"B{lastRow}").DecimalValueIronXLは、数学、統計、テキスト、日付、検索などのカテゴリを含む、ほとんどの標準的なExcel関数をサポートしています。 高度なシナリオ向けに配列数式(Ctrl+Shift+Enterのセマンティクス)もサポートされています。 数式の評価は.NETプロセス内で行われるため、外部の計算サービスへの往復通信は発生しません。数式が割り当てられるとすぐに結果が得られるため、数千行にわたる計算の場合でもAPIの応答時間を予測可能なものにすることができます。 数式サポートリファレンスには、サポートされているすべての関数が一覧表示されています。
次のステップは何ですか?
IronXLを使用してExcel APIを構築することで、 .NET Coreアプリケーションはスプレッドシートを操作するための確かな機能を備えることができます。 IronXLは、書式設定されたデータと計算式を含むXLSXファイルの作成から、ユーザーアップロードのインポート、複数の形式でのデータエクスポートまで、プログラムによるスプレッドシート操作のあらゆる側面を、クロスプラットフォームかつOffice不要の方法で処理します。
さらに詳しく知るには、次のリソースを参照してください。
- IronXL製品ページ- 機能概要と入門ガイド
- IronXLドキュメント-- 完全なAPIリファレンスとハウツー記事
- C#でExcelファイルを作成する -- ワークブックとワークシートの作成の詳細なチュートリアル
- C#でExcelファイルを読む -- 読み込み、解析、データの抽出
- ExcelをCSVにエクスポートする -- CSVエクスポートのエンコーディングとデリミタオプション -セル書式設定API -- フォント、色、罫線、数値形式
- 条件付き書式設定 -- ルール、データバー、カラースケール -数式サポート-- サポートされている Excel 関数のリファレンス
- ファイル保護 -- ワークブックとワークシートのパスワードAPI
- NuGetパッケージ-- 現在のリリースとバージョン履歴
無料トライアルを開始して、実際のプロジェクトでIronXLをテストするか、ライセンスオプションを確認して、本番環境への導入に最適なプランを見つけてください。

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。
関連する記事



