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

IronXLを使用して C# で Excel ファイルを読み取る方法

C#アプリケーションでExcelファイルを読み込むことは、ビジネスソフトウェア、データ処理パイプライン、レポートシステムにおいて繰り返し求められる要件です。 Microsoft Office Interop を使用する従来のアプローチでは、すべてのサーバーまたはワークステーションに Excel をインストールする必要があり、不安定な依存関係が生じて、展開とライセンス管理が複雑化します。 IronXLは、その依存関係を完全に排除します。アプリケーションは、環境内にOfficeがインストールされていなくても、XLSX、XLS、CSVなどのスプレッドシート形式を読み込むことができます。

このチュートリアルでは、ライブラリのインストール、ワークブックの読み込み、セルに入力された値の抽出、行と列の反復処理、集計計算の実行、そして完全な従業員データリーダーの構築など、必要なすべてのテクニックを順を追って説明します。 すべての例は、 .NET 10 をターゲットとしたトップレベルのステートメントを使用した C# を使用しています。


Excel処理用のIronXLはどのようにインストールするのですか?

Visual Studio でNuGetパッケージ マネージャー コンソールを開き、次のコマンドを実行してIronXL をプロジェクトに追加します。 あるいは、ターミナルから作業したい場合は、2行目に示されている.NET CLIコマンドを使用してください。

Install-Package IronXl.Excel
dotnet add package IronXl.Excel
Install-Package IronXl.Excel
dotnet add package IronXl.Excel
SHELL

このパッケージは数秒でインストールされ、プロジェクトに単一のマネージド アセンブリ参照を追加します。 COM登録も不要、Officeプライマリ相互運用アセンブリも不要、バージョン固有のExcel依存関係を管理する必要もありません。

インストール後、スプレッドシートデータを扱う各ファイルの先頭にusingディレクティブを追加してください。

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

その単一の名前空間により、WorkSheet、セル範囲、型付き値プロパティ、集計関数、およびその他のすべてのIronXL型にアクセスできます。 IronXL .Excel のNuGetギャラリーページには、利用可能なすべてのリリースとその完全な依存関係ツリーが一覧表示されています。


IronXLはどのようなExcelファイル形式をサポートしていますか?

アプリケーションが処理する必要のあるフォーマットを理解することで、行うAPI呼び出しとプロジェクトで採用するストレージに関する決定の両方が左右されます。

XLSXは、Excel 2007以降のデフォルト形式であり、XMLファイルのZIPアーカイブです。 100万行を超えるデータ、豊富な書式設定、ピボットテーブル、名前付き範囲をサポートしています。 最新のデータパイプラインのほとんどはXLSX形式で出力するため、これが最もよく目にするフォーマットです。

XLSは、Excel 2003以前のバージョンで使用されていた旧式のバイナリ形式です。 一部のEnterpriseシステムは依然としてXLS形式でデータをエクスポートするため、古いインフラストラクチャとの統合においては、この形式への確実な対応が重要となる。 IronXLは、ユーザー側で特別な設定を行うことなくXLSファイルを読み込むことができます。

XLSMはXLSXにマクロサポートを追加する拡張版です。 IronXLは、埋め込まれたVBAコードを実行しなくても、XLSMファイルからスプレッドシートデータを読み取ります。これは、サーバー側でのデータ抽出における正しい動作です。

CSVとTSVは、システム間のデータ交換に広く使用されているプレーンテキスト形式の表形式です。 WorkBook.LoadCSV はカンマ区切りのファイルを処理し、 IronXL はコードが既にナビゲート方法を知っているのと同じ WorkBook オブジェクトを返すため、ソース形式に関係なくデータ読み取りロジックが統一されます。

IronXL は、WorkBook.Load を呼び出すと、ファイル拡張子からファイル形式を自動的に検出します。 ほとんどの場合、フォーマットを明示的に指定する必要はないため、複数のソースからの入力を処理する必要のあるコードを簡素化できます。

IronXLでサポートされているExcelファイル形式
形式 拡大 ロードメソッド 注意事項
Open XMLワークブック .xlsx WorkBook.Load デフォルトのモダンフォーマット
レガシーバイナリ .xls WorkBook.Load Excel 2003以前
マクロ有効 .xlsm WorkBook.Load データは読み込まれましたが、マクロは実行されませんでした。
カンマ区切り .csv WorkBook.LoadCSV 最適化されたCSVパーサー
タブ区切り .tsv WorkBook.Load タブ区切り文字のバリアント

Excelワークブックを読み込んで表示するにはどうすればよいですか?

WorkBook.Load メソッドは、すべてのファイルベースの操作のエントリポイントです。 ファイルパスを渡すと、 IronXLはすぐにクエリを実行できる、データが完全に入力されたワークブックオブジェクトを返します。

using IronXL;

// Load the workbook; format is detected automatically
WorkBook workbook = WorkBook.Load("Employees.xlsx");

// Access the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a single cell by A1 address
string companyName = sheet["A1"].StringValue;
Console.WriteLine($"Company: {companyName}");

// Access sheets by name or by zero-based index
WorkSheet byName  = workbook.GetWorkSheet("Sales");
WorkSheet byIndex = workbook.WorkSheets[1];

// Load a password-protected file
WorkBook secured = WorkBook.Load("Confidential.xlsx", "p@ssw0rd");
using IronXL;

// Load the workbook; format is detected automatically
WorkBook workbook = WorkBook.Load("Employees.xlsx");

// Access the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a single cell by A1 address
string companyName = sheet["A1"].StringValue;
Console.WriteLine($"Company: {companyName}");

// Access sheets by name or by zero-based index
WorkSheet byName  = workbook.GetWorkSheet("Sales");
WorkSheet byIndex = workbook.WorkSheets[1];

// Load a password-protected file
WorkBook secured = WorkBook.Load("Confidential.xlsx", "p@ssw0rd");
Imports IronXL

' Load the workbook; format is detected automatically
Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")

' Access the first worksheet
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Read a single cell by A1 address
Dim companyName As String = sheet("A1").StringValue
Console.WriteLine($"Company: {companyName}")

' Access sheets by name or by zero-based index
Dim byName As WorkSheet = workbook.GetWorkSheet("Sales")
Dim byIndex As WorkSheet = workbook.WorkSheets(1)

' Load a password-protected file
Dim secured As WorkBook = WorkBook.Load("Confidential.xlsx", "p@ssw0rd")
$vbLabelText   $csharpLabel

DefaultWorkSheet プロパティは最初のシートを返します。これは、ほとんどの単一シートファイルに対応しています。 ファイルに複数のシートが含まれている場合、GetWorkSheet は名前で取得し、WorkSheets[n] はゼロベースのインデックスで取得します。 WorkBook APIリファレンスには、ワークブックオブジェクトのすべてのオーバーロードとプロパティが記載されています。

VB .NET IronXLを使用して Excel ファイルを読み込む: Microsoft Office なしでのステップバイステップガイド: 画像 1 - インストール

入力

VB .NET IronXLを使用した Excel ファイルの読み込み: Microsoft Office なしのステップバイステップガイド: 画像 2 - Excel 入力例

出力

VB .NET IronXLを使用した Excel ファイルの読み込み: Microsoft Office なしのステップバイステップガイド: 画像 3 - コンソール出力


Excelで入力されたセル値を読み取るにはどうすればよいですか?

IronXLのすべてのセルは、必要なデータ型で値を返す型付きプロパティを公開しています。手動での解析や型変換は不要です。 型付きプロパティは、基となるセル表現からの型変換を自動的に処理します。

using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Extract typed values from row 2
int      employeeId = sheet["A2"].IntValue;
string   name       = sheet["B2"].StringValue;
string   department = sheet["C2"].StringValue;
decimal  salary     = sheet["D2"].DecimalValue;
DateTime hireDate   = sheet["E2"].DateTimeValue;

Console.WriteLine($"ID:         {employeeId}");
Console.WriteLine($"Name:       {name}");
Console.WriteLine($"Department: {department}");
Console.WriteLine($"Salary:     {salary:C}");
Console.WriteLine($"Hired:      {hireDate:d}");

// Use the Text property for the formatted display value
string formattedSalary = sheet["D2"].Text;   // "$75,000.00"
string formattedDate   = sheet["E2"].Text;   // "28/02/2026"

// Guard against empty cells before reading
if (!sheet["B3"].IsEmpty)
{
    string value = sheet["B3"].StringValue;
}
using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Extract typed values from row 2
int      employeeId = sheet["A2"].IntValue;
string   name       = sheet["B2"].StringValue;
string   department = sheet["C2"].StringValue;
decimal  salary     = sheet["D2"].DecimalValue;
DateTime hireDate   = sheet["E2"].DateTimeValue;

Console.WriteLine($"ID:         {employeeId}");
Console.WriteLine($"Name:       {name}");
Console.WriteLine($"Department: {department}");
Console.WriteLine($"Salary:     {salary:C}");
Console.WriteLine($"Hired:      {hireDate:d}");

// Use the Text property for the formatted display value
string formattedSalary = sheet["D2"].Text;   // "$75,000.00"
string formattedDate   = sheet["E2"].Text;   // "28/02/2026"

// Guard against empty cells before reading
if (!sheet["B3"].IsEmpty)
{
    string value = sheet["B3"].StringValue;
}
Imports IronXL

Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Extract typed values from row 2
Dim employeeId As Integer = sheet("A2").IntValue
Dim name As String = sheet("B2").StringValue
Dim department As String = sheet("C2").StringValue
Dim salary As Decimal = sheet("D2").DecimalValue
Dim hireDate As DateTime = sheet("E2").DateTimeValue

Console.WriteLine($"ID:         {employeeId}")
Console.WriteLine($"Name:       {name}")
Console.WriteLine($"Department: {department}")
Console.WriteLine($"Salary:     {salary:C}")
Console.WriteLine($"Hired:      {hireDate:d}")

' Use the Text property for the formatted display value
Dim formattedSalary As String = sheet("D2").Text   ' "$75,000.00"
Dim formattedDate As String = sheet("E2").Text     ' "28/02/2026"

' Guard against empty cells before reading
If Not sheet("B3").IsEmpty Then
    Dim value As String = sheet("B3").StringValue
End If
$vbLabelText   $csharpLabel

Text プロパティは、Excel でフォーマットされたとおりの表示値を返します。これは、生の数値ではなく、フォーマットされた数値文字列が必要な場合に便利です。 IronXLは、 Excelの数式を含むセルに対して、その数式を評価し、同じ型のプロパティを通して計算結果を返します。 追加の値プロパティ -- FloatValue -- がセル値参照に表示されます。


Excelの行と列を反復処理するにはどうすればよいですか?

データセット内のすべてのレコードを処理するには、行と列を順に処理していく必要があります。 IronXLの範囲指定構文はExcelのA1表記に直接対応しているため、スプレッドシートの数式を書いたことがある人なら誰でも、セルのブロックを選択する操作に慣れ親しんでいるでしょう。

using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Iterate a single column range
Console.WriteLine("Employee List:");
foreach (var cell in sheet["B2:B100"])
{
    if (!string.IsNullOrEmpty(cell.Text))
        Console.WriteLine($"  - {cell.Text}");
}

// Iterate all rows and all columns using the Rows property
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
        Console.Write(cell.Text.PadRight(15));
    Console.WriteLine();
}
using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Iterate a single column range
Console.WriteLine("Employee List:");
foreach (var cell in sheet["B2:B100"])
{
    if (!string.IsNullOrEmpty(cell.Text))
        Console.WriteLine($"  - {cell.Text}");
}

// Iterate all rows and all columns using the Rows property
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
        Console.Write(cell.Text.PadRight(15));
    Console.WriteLine();
}
Imports IronXL

Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Iterate a single column range
Console.WriteLine("Employee List:")
For Each cell In sheet("B2:B100")
    If Not String.IsNullOrEmpty(cell.Text) Then
        Console.WriteLine($"  - {cell.Text}")
    End If
Next

' Iterate all rows and all columns using the Rows property
For Each row In sheet.Rows
    For Each cell In row
        Console.Write(cell.Text.PadRight(15))
    Next
    Console.WriteLine()
Next
$vbLabelText   $csharpLabel

範囲 sheet["B2:B100"] は、セルオブジェクトの列挙可能なコレクションを返します。 string.IsNullOrEmpty をチェックすると、空白行は適切にスキップされます。 ワークシートのデータ範囲ガイドに記載されているプロパティ Rows は、シートを一度に 1 行ずつ走査し、列数を事前に知る必要なく、各行のセルを表示します。

出力

VB .NET IronXLを使用した Excel ファイルの読み込み: Microsoft Office なしのステップバイステップガイド: 画像 4 - Excel 行の出力


Excelデータに対して集計計算を実行するにはどうすればよいですか?

IronXLには、セル範囲に基づいて結果を直接計算する組み込みの集計関数が含まれています。手動での累積ループは不要です。

using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Built-in aggregate methods work on any named range
decimal total   = sheet["D2:D200"].Sum();
decimal highest = sheet["D2:D200"].Max();
decimal lowest  = sheet["D2:D200"].Min();
decimal average = sheet["D2:D200"].Avg();

Console.WriteLine($"Total Payroll:  {total:C}");
Console.WriteLine($"Highest Salary: {highest:C}");
Console.WriteLine($"Lowest Salary:  {lowest:C}");
Console.WriteLine($"Average Salary: {average:C}");

// Combine with LINQ for filtered aggregation
decimal itTotal = sheet["D2:D200"]
    .Where(c => sheet[$"C{c.RowIndex}"].StringValue == "IT")
    .Sum(c => c.DecimalValue);
Console.WriteLine($"IT Department Total: {itTotal:C}");
using IronXL;

WorkBook workbook = WorkBook.Load("Employees.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// Built-in aggregate methods work on any named range
decimal total   = sheet["D2:D200"].Sum();
decimal highest = sheet["D2:D200"].Max();
decimal lowest  = sheet["D2:D200"].Min();
decimal average = sheet["D2:D200"].Avg();

Console.WriteLine($"Total Payroll:  {total:C}");
Console.WriteLine($"Highest Salary: {highest:C}");
Console.WriteLine($"Lowest Salary:  {lowest:C}");
Console.WriteLine($"Average Salary: {average:C}");

// Combine with LINQ for filtered aggregation
decimal itTotal = sheet["D2:D200"]
    .Where(c => sheet[$"C{c.RowIndex}"].StringValue == "IT")
    .Sum(c => c.DecimalValue);
Console.WriteLine($"IT Department Total: {itTotal:C}");
Imports IronXL

Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Built-in aggregate methods work on any named range
Dim total As Decimal = sheet("D2:D200").Sum()
Dim highest As Decimal = sheet("D2:D200").Max()
Dim lowest As Decimal = sheet("D2:D200").Min()
Dim average As Decimal = sheet("D2:D200").Avg()

Console.WriteLine($"Total Payroll:  {total:C}")
Console.WriteLine($"Highest Salary: {highest:C}")
Console.WriteLine($"Lowest Salary:  {lowest:C}")
Console.WriteLine($"Average Salary: {average:C}")

' Combine with LINQ for filtered aggregation
Dim itTotal As Decimal = sheet("D2:D200") _
    .Where(Function(c) sheet($"C{c.RowIndex}").StringValue = "IT") _
    .Sum(Function(c) c.DecimalValue)
Console.WriteLine($"IT Department Total: {itTotal:C}")
$vbLabelText   $csharpLabel

Avgは、空のセルを自動的にスキップし、バックグラウンドで数値変換を処理します。 LINQクエリを範囲に連結することで、部門別小計、日付範囲別合計、条件付きカウントなど、フィルタリングされた集計値をIronXL APIから移動することなく取得できます。


完全な従業員データリーダーを構築するにはどうすればよいでしょうか?

次の例では、これまで説明してきたすべての機能を統合し、従業員スプレッドシートを読み込み、各レコードの書式を設定し、給与合計を集計し、書き戻し処理を行い、エラーを適切に捕捉する、実運用可能なコンソールアプリケーションを作成します。

using IronXL;

try
{
    WorkBook workbook = WorkBook.Load("Employees.xlsx");
    WorkSheet sheet   = workbook.DefaultWorkSheet;

    Console.WriteLine("=== Employee Data Report ===\n");

    int     rowNumber     = 2;
    decimal totalSalary   = 0m;
    int     employeeCount = 0;

    while (!string.IsNullOrEmpty(sheet[$"A{rowNumber}"].StringValue))
    {
        int      id         = sheet[$"A{rowNumber}"].IntValue;
        string   name       = sheet[$"B{rowNumber}"].StringValue;
        string   department = sheet[$"C{rowNumber}"].StringValue;
        decimal  salary     = sheet[$"D{rowNumber}"].DecimalValue;

        Console.WriteLine($"{id,4}  {name,-20}  {department,-15}  {salary,10:C}");

        totalSalary   += salary;
        employeeCount += 1;
        rowNumber     += 1;
    }

    Console.WriteLine($"\nTotal Employees: {employeeCount}");
    Console.WriteLine($"Total Payroll:   {totalSalary:C}");

    // Write a new record back to the sheet and save
    sheet["A10"].Value = 1010;
    sheet["B10"].Value = "Jane Doe";
    sheet["C10"].Value = "Finance";
    sheet["D10"].Value = 75000;
    workbook.SaveAs("Employees-Updated.xlsx");
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
using IronXL;

try
{
    WorkBook workbook = WorkBook.Load("Employees.xlsx");
    WorkSheet sheet   = workbook.DefaultWorkSheet;

    Console.WriteLine("=== Employee Data Report ===\n");

    int     rowNumber     = 2;
    decimal totalSalary   = 0m;
    int     employeeCount = 0;

    while (!string.IsNullOrEmpty(sheet[$"A{rowNumber}"].StringValue))
    {
        int      id         = sheet[$"A{rowNumber}"].IntValue;
        string   name       = sheet[$"B{rowNumber}"].StringValue;
        string   department = sheet[$"C{rowNumber}"].StringValue;
        decimal  salary     = sheet[$"D{rowNumber}"].DecimalValue;

        Console.WriteLine($"{id,4}  {name,-20}  {department,-15}  {salary,10:C}");

        totalSalary   += salary;
        employeeCount += 1;
        rowNumber     += 1;
    }

    Console.WriteLine($"\nTotal Employees: {employeeCount}");
    Console.WriteLine($"Total Payroll:   {totalSalary:C}");

    // Write a new record back to the sheet and save
    sheet["A10"].Value = 1010;
    sheet["B10"].Value = "Jane Doe";
    sheet["C10"].Value = "Finance";
    sheet["D10"].Value = 75000;
    workbook.SaveAs("Employees-Updated.xlsx");
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading Excel file: {ex.Message}");
}
Imports IronXL

Try
    Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx")
    Dim sheet As WorkSheet = workbook.DefaultWorkSheet

    Console.WriteLine("=== Employee Data Report ===" & vbCrLf)

    Dim rowNumber As Integer = 2
    Dim totalSalary As Decimal = 0D
    Dim employeeCount As Integer = 0

    While Not String.IsNullOrEmpty(sheet($"A{rowNumber}").StringValue)
        Dim id As Integer = sheet($"A{rowNumber}").IntValue
        Dim name As String = sheet($"B{rowNumber}").StringValue
        Dim department As String = sheet($"C{rowNumber}").StringValue
        Dim salary As Decimal = sheet($"D{rowNumber}").DecimalValue

        Console.WriteLine($"{id,4}  {name,-20}  {department,-15}  {salary,10:C}")

        totalSalary += salary
        employeeCount += 1
        rowNumber += 1
    End While

    Console.WriteLine(vbCrLf & $"Total Employees: {employeeCount}")
    Console.WriteLine($"Total Payroll:   {totalSalary:C}")

    ' Write a new record back to the sheet and save
    sheet("A10").Value = 1010
    sheet("B10").Value = "Jane Doe"
    sheet("C10").Value = "Finance"
    sheet("D10").Value = 75000
    workbook.SaveAs("Employees-Updated.xlsx")
Catch ex As Exception
    Console.WriteLine($"Error reading Excel file: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

while ループは列 A が空になったときに終了するため、ハードコードされた行数を必要とせずに、あらゆる長さのスプレッドシートに適応できます。 値を書き戻す場合も、読み込みと同じセルアドレス構文を使用し、SaveAs は変更を新しいファイルに保存するため、元のファイルは変更されません。 try/catch ブロックは、ファイルの欠落、ロックされたワークブック、破損したデータなど、外部ソースから入力ファイルが届く運用環境で発生するすべてのシナリオを処理します。

出力

VB .NET IronXLを使用した Excel ファイルの読み込み: Microsoft Office なしのステップバイステップガイド: 画像 5 - 従業員データ出力

スプレッドシートの作成方法に関するガイドと、 XLSXファイルをCSVファイルに変換する方法に関するガイドでは、エンドツーエンドのワークフローで読み書きを組み合わせる方法を示しています。 セルのスタイルガイドでは、書式設定された出力が必要な場合のフォントサイズ、色、および罫線について説明します。

VB .NET IronXLを使用した Excel ファイルの読み込み: Microsoft Office なしのステップバイステップガイド: 画像 6 - Windows フォーム出力


高度な読解シナリオにはどのように対処しますか?

実際のプロジェクトでは、あまり一般的ではないものの重要なシナリオがいくつか発生する。 名前付き範囲、ワークシートの検出、およびCSVファイルの読み込みは、それぞれ専用のAPIでサポートされています。

名前付き範囲を使用すると、セルアドレスではなく論理ラベルでデータを参照できます。 ワークブックの作成者が SalaryTable という名前付き範囲を定義した場合、GetRangeByName を介して直接アクセスできます。

var range = workbook.GetRangeByName("SalaryTable");
decimal total = range.Sum();
Console.WriteLine($"Named range total: {total:C}");
var range = workbook.GetRangeByName("SalaryTable");
decimal total = range.Sum();
Console.WriteLine($"Named range total: {total:C}");
Dim range = workbook.GetRangeByName("SalaryTable")
Dim total As Decimal = range.Sum()
Console.WriteLine($"Named range total: {total:C}")
$vbLabelText   $csharpLabel

ワークシート検出機能は、ワークブック内のすべてのシートを列挙します。これは、タブの数が可変のファイルを処理する場合に便利です。

foreach (WorkSheet ws in workbook.WorkSheets)
    Console.WriteLine($"Sheet: {ws.Name}, Rows: {ws.RowCount}");
foreach (WorkSheet ws in workbook.WorkSheets)
    Console.WriteLine($"Sheet: {ws.Name}, Rows: {ws.RowCount}");
For Each ws As WorkSheet In workbook.WorkSheets
    Console.WriteLine($"Sheet: {ws.Name}, Rows: {ws.RowCount}")
Next
$vbLabelText   $csharpLabel

CSV の読み込みには、プレーンテキスト ファイル用に最適化された専用メソッドが使用され、WorkSheet が返されます。同じ範囲 API を使用してナビゲートします。

WorkBook csv    = WorkBook.LoadCSV("data.csv");
WorkSheet first = csv.DefaultWorkSheet;
Console.WriteLine(first["A1"].StringValue);
WorkBook csv    = WorkBook.LoadCSV("data.csv");
WorkSheet first = csv.DefaultWorkSheet;
Console.WriteLine(first["A1"].StringValue);
Dim csv As WorkBook = WorkBook.LoadCSV("data.csv")
Dim first As WorkSheet = csv.DefaultWorkSheet
Console.WriteLine(first("A1").StringValue)
$vbLabelText   $csharpLabel

これらのパターンは、データ移行プロジェクト、ETLパイプライン、自動レポートシステムなどで発生する高度な読み取りシナリオを網羅しています。 APIの全容については、 IronXLオブジェクトリファレンスを参照してください。

その他の信頼できる参考文献:


次のステップは何ですか?

IronXLは、依存関係の多い相互運用性の課題であったExcelファイルの読み込みを、わずか数行のシンプルなC#コードに置き換えます。 ワークブックの読み込み、入力値の抽出、行ごとの反復処理、集計計算の実行、およびエッジケースの処理はすべて、一貫した同じAPIパターンに従います。しかも、展開環境にMicrosoft Officeがどこにもインストールされていなくても動作します。

チュートリアルから本番環境へ移行するには:

1.無料トライアルを開始してIronXLの全機能を利用し、ライセンス契約前にご自身のExcelファイルで動作を確認してください。

  1. IronXLの完全なドキュメントを参照して、スプレッドシートの作成、書式設定、スタイル設定、および変換に関するガイドを確認してください。 3.オブジェクト参照と完全なAPIを調べて、ライブラリで利用可能なすべてのクラス、メソッド、プロパティを確認してください。
  2. ワークフローで入力ファイルの読み込みだけでなく出力ファイルの生成も必要な場合は、スプレッドシートの作成方法に関するガイドを確認してください。
  3. IronXLのブログ記事一覧で、レポート生成、データ検証、複数シートの統合など、実際のシナリオを網羅した追加のチュートリアルを確認してください。

よくある質問

IronXLとは何ですか?

IronXLは.NETライブラリで、開発者はMicrosoft Officeをインストールすることなく、XLSXやXLSなどの様々な形式のExcelファイルを読み、編集し、作成することができます。

IronXLを使用して C# で Excel ファイルを読み取るにはどうすればよいでしょうか?

ファイル パスを指定して WorkBook.Load を呼び出してブックを開き、A1 表記と StringValue、IntValue、DecimalValue などの型指定されたプロパティを使用してセルにアクセスします。

Excelファイルの読み込みにMicrosoft Office InteropではなくIronXLを選ぶ理由は何ですか?

IronXLでは Microsoft Office をインストールする必要がないため、COM の依存関係がなくなり、サーバー側の展開が簡素化されます。

IronXL はどのような Excel ファイル形式を読み取ることができますか?

IronXLはXLSX、XLS、XLSM、CSV、TSV形式を読み取ります。ファイル拡張子に基づいて形式が自動的に検出されます。

IronXLは大規模なExcelファイルを効率的に処理できますか?

はい、 IronXLはパフォーマンスが最適化されており、大きな Excel ファイルを処理できるため、データ集約型のアプリケーションに適しています。

IronXL は.NET 10 で動作しますか?

はい、 IronXL は.NET 10 を含む最新 for .NETバージョンと.NET Frameworkプロジェクトをサポートしています。

IronXLで集計計算を実行するにはどうすればよいでしょうか?

任意のセル範囲に対して、組み込みのSum、Min、Max、Avgメソッドを使用できます。これらのメソッドは空のセルを自動的にスキップします。

IronXL はパスワードで保護された Excel ファイルを読み取ることができますか?

はい、WorkBook.Load の 2 番目の引数としてパスワードを渡します: WorkBook.Load("file.xlsx", "password")。

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

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

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

アイアンサポートチーム

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