IronXLを使って C# で Excel ファイルを開く方法
C# で Excel ファイルを開いて操作することは、ほぼすべての.NET開発者が遅かれ早かれ経験することです。週次レポートの自動化、データインポートの処理、あるいはその場でスプレッドシートを生成するツールの構築など、どのような場合でも、選択するライブラリによって処理速度、信頼性、そして導入の柔軟性が大きく左右されます。
このチュートリアルでは、Microsoft Officeのインストールを必要とせずにワークブックの読み込み、編集、書き込みを行うことができる軽量なExcelライブラリであるIronXLを使用して、C#でExcelファイルを開く方法を解説します。 C#アプリケーション内で、データの読み込み、ワークシートへのアクセス、セルの操作をプログラムで行うことがどれほど簡単かがお分かりいただけるでしょう。
Microsoft.Office.Interop.ExcelよりIronXLを選ぶ理由
Microsoft.Office.Interop.ExcelはExcelの自動化における従来の手法でしたが、重大な制約があるため、最新のアプリケーションにはIronXLの方が適しています。 マイクロソフト自身も、不安定性、拡張性の問題、およびサポートされていない展開シナリオを理由に、サーバー上でのOffice Interopの使用を推奨していません。
| 特徴 | IronXL | Microsoft.Office.Interop.Excel |
|---|---|---|
| Excelのインストールが必要です | なし | はい |
| クロスプラットフォームサポート | Windows, Linux, macOS | Windowsのみ |
| サーバー展開 | 完全サポート | マイクロソフトは推奨していません |
| メモリ管理 | 自動翻訳 | 手動のCOMクリーンアップが必要 |
| APIの複雑さ | シンプルで直感的 | 複雑なCOMインターフェース |
| ファイル形式のサポート | XLS、XLSX、CSV、TSV、JSON | Excel形式に限定 |
| スレッドセーフティ | サポートされています | シングルスレッドのみ |
IronXLはMicrosoft Excelへの依存を排除するため、サーバー環境、 Dockerコンテナ、 Azureなどのクラウドプラットフォームに最適です。 このライブラリは、COMオブジェクトや手動によるメモリ管理を不要にする、クリーンでモダンなAPIを提供します。 IronXLはファイルを開くだけでなく、数式の評価から グラフの生成、セルのスタイル設定まで、あらゆる処理を行います。
.NETプロジェクトにIronXLをインストールするにはどうすればよいですか?
IronXLの利用開始は簡単です。NuGetパッケージマネージャーを使えば、数分でプロジェクトに追加できます。 Visual StudioでPackage Manager Consoleを開き、実行してください:
Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
どちらのコマンドも同じパッケージをインストールします。 1つ目はVisual Studioパッケージマネージャーコンソールで使用し、2つ目は.NET CLIで使用してください。 インストール後、パッケージ参照がプロジェクトファイルの<PackageReference Include="IronXL.Excel" />の下に表示されることを確認できます。
IronXLはどの.NETバージョンをサポートしていますか?
IronXLは、 .NET 10、 .NET 8、 .NET 6、 .NET Framework 4.6.2以降、および.NET Standard 2.0を含む、最新の.NETバージョンすべてに対応しています。この幅広いサポートにより、 .NET 10をターゲットとする新規プロジェクトだけでなく、従来の.NET Frameworkで動作するレガシーアプリケーションにもIronXLを使用できます。
このライブラリは単一のNuGetパッケージとして提供されており、ターゲットフレームワークに適したバイナリが自動的に選択されます。 追加の依存関係はなく、プラットフォーム固有のインストールも不要で、Excelのライセンスも必要ありません。 サポートされているランタイムとプラットフォームの完全なリストについては、 IronXL互換性ガイドをご覧ください。
C#で既存のExcelファイルを開いて読み込むにはどうすればよいですか?
IronXLを使用して既存のExcelファイルを開くには、コードがほんの数行必要です。 このライブラリは、統一されたAPIを通じて、XLSファイルとXLSXファイルに加え、CSV形式とTSV形式のファイルの読み込みをサポートしています。 以下の例は、基本的なワークフローを示しています。
// Load an existing Excel file
WorkBook workbook = WorkBook.Load("sales-data.xlsx");
// Access the first worksheet by index
WorkSheet sheet = workbook.WorkSheets[0];
// Or access a worksheet by name
WorkSheet namedSheet = workbook.GetWorkSheet("January Sales");
// Read a specific cell value
string cellValue = sheet["A1"].StringValue;
Console.WriteLine($"Cell A1 contains: {cellValue}");
// Read a numeric value
decimal revenue = sheet["B2"].DecimalValue;
Console.WriteLine($"Revenue: {revenue:C}");
// Check cell data type before reading
var cell = sheet["C3"];
Console.WriteLine($"Type: {cell.Type}, Value: {cell.Value}");
// Load an existing Excel file
WorkBook workbook = WorkBook.Load("sales-data.xlsx");
// Access the first worksheet by index
WorkSheet sheet = workbook.WorkSheets[0];
// Or access a worksheet by name
WorkSheet namedSheet = workbook.GetWorkSheet("January Sales");
// Read a specific cell value
string cellValue = sheet["A1"].StringValue;
Console.WriteLine($"Cell A1 contains: {cellValue}");
// Read a numeric value
decimal revenue = sheet["B2"].DecimalValue;
Console.WriteLine($"Revenue: {revenue:C}");
// Check cell data type before reading
var cell = sheet["C3"];
Console.WriteLine($"Type: {cell.Type}, Value: {cell.Value}");
' Load an existing Excel file
Dim workbook As WorkBook = WorkBook.Load("sales-data.xlsx")
' Access the first worksheet by index
Dim sheet As WorkSheet = workbook.WorkSheets(0)
' Or access a worksheet by name
Dim namedSheet As WorkSheet = workbook.GetWorkSheet("January Sales")
' Read a specific cell value
Dim cellValue As String = sheet("A1").StringValue
Console.WriteLine($"Cell A1 contains: {cellValue}")
' Read a numeric value
Dim revenue As Decimal = sheet("B2").DecimalValue
Console.WriteLine($"Revenue: {revenue:C}")
' Check cell data type before reading
Dim cell = sheet("C3")
Console.WriteLine($"Type: {cell.Type}, Value: {cell.Value}")
XLS、XLSX、CSV、TSVなどのファイル形式を自動的に検出し、追加設定なしで解析します。 ワークシートへのアクセスは、workbook.WorkSheets[0]@を使ったインデックスか、GetWorkSheet()@を使った名前のどちらかで行います。 個々のセルの値は、ブラケット記法(sheet["A1"])で読み取り可能で、コードを簡潔かつ表現豊かにします。サポートされるファイルタイプの完全なリストについては、Open XML SDK documentation on SpreadsheetMLとIronXL NuGet package pageを参照してください。
型付きアクセスのために、IronXLは@@--CODE-42733--@、@@--CODE-42734--@、@@--CODE-42735--@、@@--CODE-42736--@、@@--CODE-42737--@のようなプロパティをセルに直接公開します。 これにより、汎用オブジェクトベースAPIでよく発生する型推測が不要になります。より複雑なシナリオについては、 Excel範囲の操作ガイドとセルデータ形式のドキュメントを参照してください。
出力

ストリームまたはバイト配列からExcelファイルを読み込むにはどうすればよいですか?
ウェブアプリケーションやクラウド関数では、ファイルパスではなく、ストリームまたはバイト配列としてファイルデータを受け取ることがよくあります。 IronXLはどちらのケースにも対応します。
// Load from a byte array (e.g., from a database or HTTP response)
byte[] fileBytes = File.ReadAllBytes("sales-data.xlsx");
WorkBook workbookFromBytes = WorkBook.Load(fileBytes);
// Load from a MemoryStream
using var memStream = new MemoryStream(fileBytes);
WorkBook workbookFromStream = WorkBook.Load(memStream);
// Access data the same way regardless of source
WorkSheet sheet = workbookFromStream.DefaultWorkSheet;
Console.WriteLine(sheet["A1"].StringValue);
// Load from a byte array (e.g., from a database or HTTP response)
byte[] fileBytes = File.ReadAllBytes("sales-data.xlsx");
WorkBook workbookFromBytes = WorkBook.Load(fileBytes);
// Load from a MemoryStream
using var memStream = new MemoryStream(fileBytes);
WorkBook workbookFromStream = WorkBook.Load(memStream);
// Access data the same way regardless of source
WorkSheet sheet = workbookFromStream.DefaultWorkSheet;
Console.WriteLine(sheet["A1"].StringValue);
Imports System
Imports System.IO
' Load from a byte array (e.g., from a database or HTTP response)
Dim fileBytes As Byte() = File.ReadAllBytes("sales-data.xlsx")
Dim workbookFromBytes As WorkBook = WorkBook.Load(fileBytes)
' Load from a MemoryStream
Using memStream As New MemoryStream(fileBytes)
Dim workbookFromStream As WorkBook = WorkBook.Load(memStream)
' Access data the same way regardless of source
Dim sheet As WorkSheet = workbookFromStream.DefaultWorkSheet
Console.WriteLine(sheet("A1").StringValue)
End Using
ストリームベースのロードは、アップロードを受け取る.NET Coreコントローラで特に有用です。 CODE-42739--@@ を呼び出し、その結果を @--CODE-42740--@@ に渡すだけです。 ASP.NET Core の統合パターンの詳細については、 ASP.NET Core Excel チュートリアルを参照してください。
C#で新しいExcelワークブックを作成するにはどうすればよいですか?
IronXLの表計算ソフトを使えば、新しいExcelファイルの作成も同様に簡単です。 以下の例は、書式設定された四半期報告書を作成するものです。
// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add metadata
workbook.Metadata.Author = "Sales Department";
workbook.Metadata.Title = "Q1 Revenue Report";
// Create a named worksheet
WorkSheet sheet = workbook.CreateWorkSheet("Q1 Report");
// Add header row
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Units Sold";
sheet["C1"].Value = "Revenue";
// Add data rows
sheet["A2"].Value = "Software Licenses";
sheet["B2"].Value = 120;
sheet["C2"].Value = 45000;
sheet["A3"].Value = "Support Contracts";
sheet["B3"].Value = 55;
sheet["C3"].Value = 27500;
// Add a SUM formula
sheet["C4"].Formula = "=SUM(C2:C3)";
// Apply number formatting
sheet["C2:C4"].FormatString = "$#,##0.00";
// Save the workbook to disk
workbook.SaveAs("quarterly-report.xlsx");
Console.WriteLine("Workbook saved successfully.");
// Create a new workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add metadata
workbook.Metadata.Author = "Sales Department";
workbook.Metadata.Title = "Q1 Revenue Report";
// Create a named worksheet
WorkSheet sheet = workbook.CreateWorkSheet("Q1 Report");
// Add header row
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Units Sold";
sheet["C1"].Value = "Revenue";
// Add data rows
sheet["A2"].Value = "Software Licenses";
sheet["B2"].Value = 120;
sheet["C2"].Value = 45000;
sheet["A3"].Value = "Support Contracts";
sheet["B3"].Value = 55;
sheet["C3"].Value = 27500;
// Add a SUM formula
sheet["C4"].Formula = "=SUM(C2:C3)";
// Apply number formatting
sheet["C2:C4"].FormatString = "$#,##0.00";
// Save the workbook to disk
workbook.SaveAs("quarterly-report.xlsx");
Console.WriteLine("Workbook saved successfully.");
' Create a new workbook in XLSX format
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Add metadata
workbook.Metadata.Author = "Sales Department"
workbook.Metadata.Title = "Q1 Revenue Report"
' Create a named worksheet
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Q1 Report")
' Add header row
sheet("A1").Value = "Product"
sheet("B1").Value = "Units Sold"
sheet("C1").Value = "Revenue"
' Add data rows
sheet("A2").Value = "Software Licenses"
sheet("B2").Value = 120
sheet("C2").Value = 45000
sheet("A3").Value = "Support Contracts"
sheet("B3").Value = 55
sheet("C3").Value = 27500
' Add a SUM formula
sheet("C4").Formula = "=SUM(C2:C3)"
' Apply number formatting
sheet("C2:C4").FormatString = "$#,##0.00"
' Save the workbook to disk
workbook.SaveAs("quarterly-report.xlsx")
Console.WriteLine("Workbook saved successfully.")
CODE-42741--@@ メソッドは、指定されたフォーマットで新しいワークブックを初期化します。 あなたは、CreateWorkSheet()を使用して複数のワークシートを追加し、文字列、数値、ブーリアン、日付を含むさまざまなデータタイプをセルに入力し、Formulaプロパティを通して直接Excel数式を適用することができます。 このライブラリは、データ型の変換やExcel固有の書式設定要件を自動的に処理します。
ヘッダーのスタイル設定や境界線の追加には、セルのスタイル設定APIを使用してください。 テンプレートベースのレポート生成については、 "既存のExcelテンプレートからのエクスポート"ガイドを参照してください。
出力

Excelワークシートのデータをまとめて読み込んで処理するにはどうすればよいですか?
IronXLは、範囲ベースの操作とDataTable変換を通じて、データ抽出と一括処理を効率的に処理します。
// Load a workbook and select the default sheet
WorkBook workbook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Read a rectangular range of cells
var range = sheet["A1:D10"];
foreach (var cell in range)
{
Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}
// Convert the worksheet to a DataTable for database integration
System.Data.DataTable dataTable = sheet.ToDataTable(useFirstRowAsColumnHeaders: true);
Console.WriteLine($"Rows: {dataTable.Rows.Count}, Columns: {dataTable.Columns.Count}");
// Use aggregate functions directly on a range
decimal total = sheet["C2:C10"].Sum();
decimal average = sheet["C2:C10"].Avg();
decimal maxValue = sheet["C2:C10"].Max();
Console.WriteLine($"Total: {total:C}");
Console.WriteLine($"Average: {average:C}");
Console.WriteLine($"Max: {maxValue:C}");
// Filter and find rows using LINQ on the DataTable
var highValue = dataTable.AsEnumerable()
.Where(row => row.Field<decimal>("Revenue") > 10000)
.ToList();
Console.WriteLine($"High-value rows: {highValue.Count}");
// Load a workbook and select the default sheet
WorkBook workbook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Read a rectangular range of cells
var range = sheet["A1:D10"];
foreach (var cell in range)
{
Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}
// Convert the worksheet to a DataTable for database integration
System.Data.DataTable dataTable = sheet.ToDataTable(useFirstRowAsColumnHeaders: true);
Console.WriteLine($"Rows: {dataTable.Rows.Count}, Columns: {dataTable.Columns.Count}");
// Use aggregate functions directly on a range
decimal total = sheet["C2:C10"].Sum();
decimal average = sheet["C2:C10"].Avg();
decimal maxValue = sheet["C2:C10"].Max();
Console.WriteLine($"Total: {total:C}");
Console.WriteLine($"Average: {average:C}");
Console.WriteLine($"Max: {maxValue:C}");
// Filter and find rows using LINQ on the DataTable
var highValue = dataTable.AsEnumerable()
.Where(row => row.Field<decimal>("Revenue") > 10000)
.ToList();
Console.WriteLine($"High-value rows: {highValue.Count}");
Imports System
Imports System.Data
Imports System.Linq
' Load a workbook and select the default sheet
Dim workbook As WorkBook = WorkBook.Load("inventory.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Read a rectangular range of cells
Dim range = sheet("A1:D10")
For Each cell In range
Console.WriteLine($"{cell.AddressString}: {cell.Text}")
Next
' Convert the worksheet to a DataTable for database integration
Dim dataTable As DataTable = sheet.ToDataTable(useFirstRowAsColumnHeaders:=True)
Console.WriteLine($"Rows: {dataTable.Rows.Count}, Columns: {dataTable.Columns.Count}")
' Use aggregate functions directly on a range
Dim total As Decimal = sheet("C2:C10").Sum()
Dim average As Decimal = sheet("C2:C10").Avg()
Dim maxValue As Decimal = sheet("C2:C10").Max()
Console.WriteLine($"Total: {total:C}")
Console.WriteLine($"Average: {average:C}")
Console.WriteLine($"Max: {maxValue:C}")
' Filter and find rows using LINQ on the DataTable
Dim highValue = dataTable.AsEnumerable() _
.Where(Function(row) row.Field(Of Decimal)("Revenue") > 10000) _
.ToList()
Console.WriteLine($"High-value rows: {highValue.Count}")
範囲選択構文 (sheet["A1:D10"]) は、一度に複数のセルを操作するエレガントな方法を提供します。 CODE-42745--@@メソッドは、ワークシートデータをSystem.Data.DataTableに変換し、Entity Framework、データバインディングコントロール、SQL一括コピー操作と直接統合します。 また、IronXLは集計関数--@--CODE-42747--@、@--CODE-42748--@、@--CODE-42749--@、@--CODE-42750--@をサポートしており、手作業で反復コードを書く必要がありません。
非常に大規模なデータセットを効率的に処理するには、ストリーミング処理とチャンク処理のパターンに関するIronXL APIリファレンス全文を参照してください。

ワークシート全体でセルをフィルタリングおよび検索するにはどうすればよいですか?
IronXLでは、範囲ベースのアクセスに加えて、値によるセルの検索、条件付きロジックの適用、行と列のプログラムによる反復処理が可能です。
WorkBook workbook = WorkBook.Load("products.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Get total row and column counts
int rowCount = sheet.RowCount;
int colCount = sheet.ColumnCount;
Console.WriteLine($"Sheet dimensions: {rowCount} rows x {colCount} columns");
// Iterate over all rows and columns
for (int row = 1; row <= rowCount; row++)
{
for (int col = 1; col <= colCount; col++)
{
var cell = sheet.GetCellAt(row, col);
if (cell != null && !string.IsNullOrEmpty(cell.Text))
{
Console.WriteLine($"[{row},{col}] = {cell.Text}");
}
}
}
// Find the first cell containing specific text
var searchResult = sheet["A1:Z100"]
.FirstOrDefault(c => c.StringValue.Contains("discontinued", StringComparison.OrdinalIgnoreCase));
if (searchResult != null)
{
Console.WriteLine($"Found 'discontinued' at: {searchResult.AddressString}");
}
WorkBook workbook = WorkBook.Load("products.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Get total row and column counts
int rowCount = sheet.RowCount;
int colCount = sheet.ColumnCount;
Console.WriteLine($"Sheet dimensions: {rowCount} rows x {colCount} columns");
// Iterate over all rows and columns
for (int row = 1; row <= rowCount; row++)
{
for (int col = 1; col <= colCount; col++)
{
var cell = sheet.GetCellAt(row, col);
if (cell != null && !string.IsNullOrEmpty(cell.Text))
{
Console.WriteLine($"[{row},{col}] = {cell.Text}");
}
}
}
// Find the first cell containing specific text
var searchResult = sheet["A1:Z100"]
.FirstOrDefault(c => c.StringValue.Contains("discontinued", StringComparison.OrdinalIgnoreCase));
if (searchResult != null)
{
Console.WriteLine($"Found 'discontinued' at: {searchResult.AddressString}");
}
Imports System
Imports System.Linq
Dim workbook As WorkBook = WorkBook.Load("products.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Get total row and column counts
Dim rowCount As Integer = sheet.RowCount
Dim colCount As Integer = sheet.ColumnCount
Console.WriteLine($"Sheet dimensions: {rowCount} rows x {colCount} columns")
' Iterate over all rows and columns
For row As Integer = 1 To rowCount
For col As Integer = 1 To colCount
Dim cell = sheet.GetCellAt(row, col)
If cell IsNot Nothing AndAlso Not String.IsNullOrEmpty(cell.Text) Then
Console.WriteLine($"[{row},{col}] = {cell.Text}")
End If
Next
Next
' Find the first cell containing specific text
Dim searchResult = sheet("A1:Z100") _
.FirstOrDefault(Function(c) c.StringValue.Contains("discontinued", StringComparison.OrdinalIgnoreCase))
If searchResult IsNot Nothing Then
Console.WriteLine($"Found 'discontinued' at: {searchResult.AddressString}")
End If
このパターンは、アップロードされたファイルをスキャンして特定の値を検出してから処理を進める必要があるデータ検証ワークフローでよく見られます。 高度なフィルタリングの使用例については、 Excel の範囲選択に関するドキュメントを参照してください。
このアプローチはどのような導入シナリオに対応していますか?
IronXLを使用する最も実用的な利点の1つは、システム上のどこにもMicrosoft Officeがインストールされていなくても動作できることです。 これにより、相互運用性に基づくソリューションでは到底実現できない、導入の柔軟性が生まれます。
クラウドおよびコンテナの導入
IronXLは、特別な設定なしにAzure App Service 、AWS Lambda、およびGoogle Cloud Run上で動作します。 Officeへの依存関係がないため、ライセンス費用と、コンテナイメージにOfficeを含める際の複雑さの両方を回避できます。 IronXLを使用する.NET 10アプリ用の最小限のDockerfileは、標準の.NETランタイムイメージのみを必要とします。
Dockerベースのデプロイも同様に簡単です。 IronXLのDockerガイドでは、 Debian、Alpine、およびWindowsコンテナの設定について解説しています。 いずれの場合も、 NuGet経由でIronXLをインストールすれば、追加のシステムパッケージなしで動作します。
サーバーとCI/CDパイプラインの使用状況
サーバー環境にはGUIが搭載されていないことが多く、Windowsデスクトップセッションに依存するアプリケーションを実行できない。 IronXLは完全にヘッドレスモードで動作するため、以下の用途に適しています。
- スケジュールされたバックグラウンドジョブで Excel レポートを生成する
- ASP.NET Core API でアップロードされたスプレッドシートを処理する
- 自動化されたパイプラインでデータテーブルまたはデータベースクエリの結果をXLSXにエクスポートする
- CI/CDテスト実行中にインポートされたデータファイルを検証する
ASP.NET Coreに関しては、ファイルストリーミング、レスポンスヘッダー、適切な破棄パターンについて解説しているASP.NET Core Excel エクスポートチュートリアルを参照してください。
クロスプラットフォーム開発
IronXLは.NET Standard 2.0をターゲットとし、LinuxとmacOS上でネイティブに動作するため、クロスプラットフォームの開発ワークフローが可能になります。 macOS の開発者は、同じバイナリが Linux の本番サーバーでも全く同じように動作するという確信を持って、ローカル環境で Excel 生成コードを記述およびテストできます。 プラットフォーム固有のAPIや条件付きコンパイルブロックは必要ありません。
サポートされている環境の詳細については、 IronXL の入門概要をご覧ください。
基本的な読み書き操作以外に、一般的なExcel操作をどのようにこなせばよいですか?
細胞の読み書きは、あくまで基礎に過ぎない。 実際のExcel自動化には、一般的に書式設定、数式、ワークシート管理、および書式変換が含まれます。
セルの書式設定とスタイルの適用
IronXLは、フォント、色、枠線、配置、数値形式など、スタイルに関するあらゆる要素を網羅した包括的なAPIを提供しています。
WorkBook workbook = WorkBook.Load("report.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Apply bold, font size, and background color to header row
var headerRange = sheet["A1:F1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.Font.Height = 12;
headerRange.Style.SetBackgroundColor("#4472C4");
headerRange.Style.Font.Color = "#FFFFFF";
headerRange.Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center;
// Format a currency column
sheet["D2:D100"].FormatString = "$#,##0.00";
// Apply a date format
sheet["E2:E100"].FormatString = "yyyy-MM-dd";
// Add borders to a data range
var dataRange = sheet["A1:F20"];
dataRange.Style.Border.Bottom.Type = IronXL.Styles.BorderType.Thin;
dataRange.Style.Border.Right.Type = IronXL.Styles.BorderType.Thin;
workbook.SaveAs("formatted-report.xlsx");
WorkBook workbook = WorkBook.Load("report.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Apply bold, font size, and background color to header row
var headerRange = sheet["A1:F1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.Font.Height = 12;
headerRange.Style.SetBackgroundColor("#4472C4");
headerRange.Style.Font.Color = "#FFFFFF";
headerRange.Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center;
// Format a currency column
sheet["D2:D100"].FormatString = "$#,##0.00";
// Apply a date format
sheet["E2:E100"].FormatString = "yyyy-MM-dd";
// Add borders to a data range
var dataRange = sheet["A1:F20"];
dataRange.Style.Border.Bottom.Type = IronXL.Styles.BorderType.Thin;
dataRange.Style.Border.Right.Type = IronXL.Styles.BorderType.Thin;
workbook.SaveAs("formatted-report.xlsx");
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("report.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Apply bold, font size, and background color to header row
Dim headerRange = sheet("A1:F1")
headerRange.Style.Font.Bold = True
headerRange.Style.Font.Height = 12
headerRange.Style.SetBackgroundColor("#4472C4")
headerRange.Style.Font.Color = "#FFFFFF"
headerRange.Style.HorizontalAlignment = IronXL.Styles.HorizontalAlignment.Center
' Format a currency column
sheet("D2:D100").FormatString = "$#,##0.00"
' Apply a date format
sheet("E2:E100").FormatString = "yyyy-MM-dd"
' Add borders to a data range
Dim dataRange = sheet("A1:F20")
dataRange.Style.Border.Bottom.Type = IronXL.Styles.BorderType.Thin
dataRange.Style.Border.Right.Type = IronXL.Styles.BorderType.Thin
workbook.SaveAs("formatted-report.xlsx")
スタイル設定オプションの詳細については、 "セル、罫線、フォントのスタイル設定方法"を参照してください。
Excel形式とCSV形式間の変換
IronXLはフォーマット変換を直接処理するため、CSVファイルを読み込んでXLSXファイルとして保存したり、XLSXファイルをCSVファイルにエクスポートして後続の処理に利用したりできます。
// Load a CSV file and save as XLSX
WorkBook csvBook = WorkBook.Load("data-import.csv");
csvBook.SaveAs("data-import.xlsx");
// Load an XLSX file and export as CSV
WorkBook xlsxBook = WorkBook.Load("report.xlsx");
xlsxBook.DefaultWorkSheet.SaveAsCsv("report.csv");
// Load a CSV file and save as XLSX
WorkBook csvBook = WorkBook.Load("data-import.csv");
csvBook.SaveAs("data-import.xlsx");
// Load an XLSX file and export as CSV
WorkBook xlsxBook = WorkBook.Load("report.xlsx");
xlsxBook.DefaultWorkSheet.SaveAsCsv("report.csv");
' Load a CSV file and save as XLSX
Dim csvBook As WorkBook = WorkBook.Load("data-import.csv")
csvBook.SaveAs("data-import.xlsx")
' Load an XLSX file and export as CSV
Dim xlsxBook As WorkBook = WorkBook.Load("report.xlsx")
xlsxBook.DefaultWorkSheet.SaveAsCsv("report.csv")
区切り文字の設定やエンコードオプションなど、CSV の処理に関する詳細については、 C# の CSV リーダーのチュートリアルとCSV から XLSX への変換ガイドを参照してください。
無料トライアルを始めるにはどうすればよいですか?
IronXLは、購入を決定する前に全機能を試用できる無料の開発ライセンス付きでダウンロード可能です。 試用期間中は機能制限はありません。本番環境で使用されているライブラリと同じものを評価できます。
開始するには:
- NuGet経由でパッケージをインストールします。
dotnet add package IronXLdotnet add package IronXLSHELL - IronXLのライセンスページにアクセスして、無料トライアルキーを入手してください。
- IronXLの呼び出しを行う前に、コード内でキーを適用します。
IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";Imports IronXL IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"$vbLabelText $csharpLabel
ライセンスは、個人開発者、チーム、組織向けに提供されています。 IronXLの製品ページには、価格の詳細や導入オプション(ロイヤリティフリーの配布権を含む)がすべて記載されています。 Iron Softwareの全製品とその連携方法についてより詳しく知りたい場合は、 Iron Software製品Suiteをご覧ください。
よくある質問
Microsoft Officeを使用せずにC#でExcelファイルを開くにはどうすればよいですか?
IronXLを使用すると、Microsoft Officeを必要とせずにC#でExcelファイルを開くことができます。IronXLはInteropの現代的な代替手段を提供し、より良いパフォーマンスとExcelの依存をなくします。
C#でExcelファイルを処理するためにIronXLを使用する利点は何ですか?
IronXLは、パフォーマンスの向上、Excelインストールへの依存なし、および展開の柔軟性の向上など、いくつかの利点を提供します。レポートの自動化、データのインポートの読み取り、およびスプレッドシートを効率的に生成することができます。
IronXLは自動化タスクのためにExcelファイルを扱うことができますか?
はい、IronXLは毎週のレポート生成、データインポートの読み取り、動的なスプレッドシート生成のためのツールの作成などの自動化タスクに最適です。
IronXLはC#アプリケーションにおけるInteropの適切な代替品ですか?
IronXLは、Excel依存を排除し、Excelファイル作業時のアプリケーションパフォーマンスを向上させるモダンなソリューションを提供するため、Interopの適切な代替品です。
IronXLはExcelファイルの読み取りと書き込みをサポートしていますか?
IronXLは、Excelファイルの読み取りと書き込みの両方を完全にサポートしており、スプレッドシートデータを扱う.NET開発者にとって汎用性の高いツールです。



