フッターコンテンツにスキップ
IRONXLの使用

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の機能比較
特徴 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
SHELL

どちらのコマンドも同じパッケージをインストールします。 1つ目はVisual Studioパッケージマネージャーコンソールで使用し、2つ目は.NET CLIで使用してください。 インストール後、パッケージ参照がプロジェクトファイルの<PackageReference Include="IronXL.Excel" />の下に表示されることを確認できます。

今IronXLを始めましょう。
green arrow pointer

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}")
$vbLabelText   $csharpLabel

XLS、XLSX、CSV、TSVなどのファイル形式を自動的に検出し、追加設定なしで解析します。 ワークシートへのアクセスは、workbook.WorkSheets[0]@を使ったインデックスか、GetWorkSheet()@を使った名前のどちらかで行います。 個々のセルの値は、ブラケット記法(sheet["A1"])で読み取り可能で、コードを簡潔かつ表現豊かにします。サポートされるファイルタイプの完全なリストについては、Open XML SDK documentation on SpreadsheetMLIronXL NuGet package pageを参照してください。

型付きアクセスのために、IronXLは@@--CODE-42733--@、@@--CODE-42734--@、@@--CODE-42735--@、@@--CODE-42736--@、@@--CODE-42737--@のようなプロパティをセルに直接公開します。 これにより、汎用オブジェクトベースAPIでよく発生する型推測が不要になります。より複雑なシナリオについては、 Excel範囲の操作ガイドセルデータ形式のドキュメントを参照してください。

出力

IronXLを使用してC#でExcelファイルアプリケーションを開く方法: 図1 - サンプルの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
$vbLabelText   $csharpLabel

ストリームベースのロードは、アップロードを受け取る.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.")
$vbLabelText   $csharpLabel

CODE-42741--@@ メソッドは、指定されたフォーマットで新しいワークブックを初期化します。 あなたは、CreateWorkSheet()を使用して複数のワークシートを追加し、文字列、数値、ブーリアン、日付を含むさまざまなデータタイプをセルに入力し、Formulaプロパティを通して直接Excel数式を適用することができます。 このライブラリは、データ型の変換やExcel固有の書式設定要件を自動的に処理します。

ヘッダーのスタイル設定や境界線の追加には、セルのスタイル設定APIを使用してください。 テンプレートベースのレポート生成については、 "既存のExcelテンプレートからのエクスポート"ガイドを参照してください。

出力

IronXLを使用してC#でExcelファイルアプリケーションを開く方法: 図2 - 新しい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}")
$vbLabelText   $csharpLabel

範囲選択構文 (sheet["A1:D10"]) は、一度に複数のセルを操作するエレガントな方法を提供します。 CODE-42745--@@メソッドは、ワークシートデータをSystem.Data.DataTableに変換し、Entity Framework、データバインディングコントロール、SQL一括コピー操作と直接統合します。 また、IronXLは集計関数--@--CODE-42747--@、@--CODE-42748--@、@--CODE-42749--@、@--CODE-42750--@をサポートしており、手作業で反復コードを書く必要がありません。

非常に大規模なデータセットを効率的に処理するには、ストリーミング処理とチャンク処理のパターンに関するIronXL APIリファレンス全文を参照してください。

IronXLを使用してC#でExcelファイルアプリケーションを開く方法: 図3 - 処理されたExcelデータの出力

ワークシート全体でセルをフィルタリングおよび検索するにはどうすればよいですか?

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
$vbLabelText   $csharpLabel

このパターンは、アップロードされたファイルをスキャンして特定の値を検出してから処理を進める必要があるデータ検証ワークフローでよく見られます。 高度なフィルタリングの使用例については、 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")
$vbLabelText   $csharpLabel

スタイル設定オプションの詳細については、 "セル、罫線、フォントのスタイル設定方法"を参照してください。

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")
$vbLabelText   $csharpLabel

区切り文字の設定やエンコードオプションなど、CSV の処理に関する詳細については、 C# の CSV リーダーのチュートリアルCSV から XLSX への変換ガイドを参照してください。

無料トライアルを始めるにはどうすればよいですか?

IronXLは、購入を決定する前に全機能を試用できる無料の開発ライセンス付きでダウンロード可能です。 試用期間中は機能制限はありません。本番環境で使用されているライブラリと同じものを評価できます。

開始するには:

  1. NuGet経由でパッケージをインストールします。
    dotnet add package IronXL
    dotnet add package IronXL
    SHELL
  2. IronXLのライセンスページにアクセスして、無料トライアルキーを入手してください。
  3. 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開発者にとって汎用性の高いツールです。

カーティス・チャウ
テクニカルライター

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

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね