IRONXLの使用

C#でExcel範囲を管理する方法

リーガン・パン
リーガン・パン
2024年9月29日
共有:

C#アプリケーションの効率性と自動化機能を大幅に向上させるために、Excelファイルをプログラムで操作することができます。 レポートを生成したり、データを処理したり、動的に複雑なスプレッドシートを作成したりする場合でも、Excelファイルの操作を習得することは非常に重要です。 このチュートリアルでは、IronXLを使用してExcel範囲を扱うことに焦点を当てます。 Excelファイル内で書き込む読み取る、および範囲を操作する方法を説明します。

C#でExcel範囲を読み取る方法

  1. Excelファイルを処理するためにIronXLライブラリをインストールします。

  2. ワークブックを読み込み、ワークシートを指定します。

  3. 読み取るセル範囲を選択します。

  4. 指定された範囲からデータを抽出して読み取ります。

IronXLとは何ですか?

IronXLは、Excelファイルの操作を簡素化するためにC#向けの包括的なライブラリであり、スプレッドシートデータのシームレスな統合と操作のための多様な機能を提供します。 その機能には、Microsoft Excel のインストールを必要とせずに、Excel ファイルの読み取り書き込み修正が含まれており、クロスプラットフォームの互換性を実現します。

IronXLは、特定のセル範囲、またはワークシート全体のデータ抽出を可能にし、書式設定スタイリング、および条件付き書式設定などの高度な機能を備えています。 計算、数式、および統計分析をサポートするIronXLは、開発者がプログラムでExcel操作を効率的に処理できるようにし、C# アプリケーション内でデータ中心のタスクを自動化するための不可欠なツールとなります。

C#でのExcelセル範囲の使い方入門

まず、アプリケーションにIronXLライブラリをインストールする必要があります。

IronXL NuGetパッケージをインストールする

次のコマンドを使用してNuGetパッケージマネージャー経由でIronXLをインストールできます。

Install-Package IronXL.Excel
Install-Package IronXL.Excel
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronXL.Excel
$vbLabelText   $csharpLabel

上記のコマンドは、IronXLとそのすべての依存関係をインストールします。

C#でExcelの範囲を管理する方法: 図1

名前空間を追加

Program.cs クラスの上部、または IronXL メソッドを使用したい場所に、次の名前空間を追加してください。

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

エクセル・ワークブックの読み込み

最初のステップは、Excelワークブックを読み込むことです。 次のコードは、アプリケーションでExcelワークブックを読み込みます。

static void Main(string[] args)
 {
     var workbook = WorkBook.Load("test_excel.xlsx");
     var sheet = workbook.GetWorkSheet("Sheet1");
 }
static void Main(string[] args)
 {
     var workbook = WorkBook.Load("test_excel.xlsx");
     var sheet = workbook.GetWorkSheet("Sheet1");
 }
Shared Sub Main(ByVal args() As String)
	 Dim workbook = WorkBook.Load("test_excel.xlsx")
	 Dim sheet = workbook.GetWorkSheet("Sheet1")
End Sub
$vbLabelText   $csharpLabel

ファイル行は、"test_excel.xlsx"という名前のファイルから既存のExcelワークブックを読み込みます。 2行目は、読み込まれたワークブックから「Sheet1」という名前のワークシートを取得します。

このチュートリアルを通して、次のExcelファイルを使用します。

C#でExcelの範囲を管理する方法: 図2

範囲からデータを読み取る

では、指定されたセル範囲からデータを読み取りましょう。

var range = sheet["A2:G10"];
foreach (var item in range)
{
    Console.WriteLine(item);
}
var range = sheet["A2:G10"];
foreach (var item in range)
{
    Console.WriteLine(item);
}
Dim range = sheet("A2:G10")
For Each item In range
	Console.WriteLine(item)
Next item
$vbLabelText   $csharpLabel

最初の行は、ワークシート内の特定の範囲アドレス(A2からG10)を選択し、複数のExcelセルを同時に操作できるようにします。 foreach (var item in range) ループは、このセル範囲内の各セルを繰り返し処理し、効率的なデータ処理を可能にします。

Console.WriteLine(item); を使用することにより コードは各セルの値をコンソールに表示し、その範囲の内容を簡単に確認できるようにします。 このアプローチはデータ処理を簡素化し、コードの可読性を向上させます。

範囲でExcelの数式を使用

特定の範囲を選択し、いくつかのExcelの数式を実装しましょう。

var range = sheet["F2:F42"];
Console.WriteLine($"Minimum Age: {range.Min()}");
Console.WriteLine($"Maximum Age: {range.Max()}");
Console.WriteLine($"Average Age: {(int)range.Avg()}");
var range = sheet["F2:F42"];
Console.WriteLine($"Minimum Age: {range.Min()}");
Console.WriteLine($"Maximum Age: {range.Max()}");
Console.WriteLine($"Average Age: {(int)range.Avg()}");
Imports System

Dim range = sheet("F2:F42")
Console.WriteLine($"Minimum Age: {range.Min()}")
Console.WriteLine($"Maximum Age: {range.Max()}")
Console.WriteLine($"Average Age: {CInt(Math.Truncate(range.Avg()))}")
$vbLabelText   $csharpLabel

コード var range = sheet["F2:F42"]; F2からF42までのセル範囲を選択し、年齢データの統計分析を促進します。 range.Min()とrange.Max()を使用して、指定された範囲内の最小および最大の年齢値を効率的に計算し、人口統計の洞察に役立てます。

さらに、range.Avg() は平均年齢を計算し、データ解釈に役立つ貴重な統計指標を提供します。 このアプローチはデータ分析業務を簡素化し、迅速に必要な統計情報にアクセスできるようにすることで、情報に基づいた意思決定を可能にします。

C#でExcel範囲を管理する方法:図3

単一セルからデータを読み取る

単一のセルからデータを読み取ります。

var read_from_single_cell = sheet["B2"];
Console.WriteLine($"The Value in Cell B2 is: {read_from_single_cell}");
var read_from_single_cell = sheet["B2"];
Console.WriteLine($"The Value in Cell B2 is: {read_from_single_cell}");
Dim read_from_single_cell = sheet("B2")
Console.WriteLine($"The Value in Cell B2 is: {read_from_single_cell}")
$vbLabelText   $csharpLabel

コード: var read_from_single_cell = sheet["B2"]; ワークシートからセルB2に格納された値を取得します。 このアプローチを使用することで、Excelファイル内の特定のセルの値に簡単にアクセスできます。

Console.WriteLine($"The Value in Cell B2 is: {read_from_single_cell}"); を使用すると、コードは参照セルの取得値をコンソールに出力し、データ検証とデバッグを容易にします。 これは、Excelファイルから個々のセルの値を取得して表示するプロセスを簡素化します。

C#でExcel範囲を管理する方法: 図4

列全体からデータを読み取る

インデックスを使用して列全体からデータを読み取りましょう。

// Get Last name Column from Index 2
 var columnValues = sheet.GetColumn(2); // 2 is column index
 foreach ( var columnValue in columnValues )
 {
     Console.WriteLine(columnValue);
 }
// Get Last name Column from Index 2
 var columnValues = sheet.GetColumn(2); // 2 is column index
 foreach ( var columnValue in columnValues )
 {
     Console.WriteLine(columnValue);
 }
' Get Last name Column from Index 2
 Dim columnValues = sheet.GetColumn(2) ' 2 is column index
 For Each columnValue In columnValues
	 Console.WriteLine(columnValue)
 Next columnValue
$vbLabelText   $csharpLabel

コード var columnValues = sheet.GetColumn(2); ワークシート内のインデックス2(B列)にある列からすべての値を取得します。 これにより、Excelシートの特定の列内のすべての値に効率的にアクセスすることができます。

foreach ループを通じて columnValues を反復処理することで、列内の各値が Console.WriteLine(columnValue); を使用してコンソールに出力されます。 このアプローチは、Excelファイルからの列形式データの処理と表示を容易にし、データ分析作業を効率化します。

C#でExcel範囲を管理する方法:図5

また、インデックスではなく列名を使用して列からデータを読み取ることもできます。 以下の例を考えてみてください:

var columnValues = sheet.GetColumn("C");
var columnValues = sheet.GetColumn("C");
Dim columnValues = sheet.GetColumn("C")
$vbLabelText   $csharpLabel

このようにして、複数の列を指定することができます。

行全体からデータを読み取る

行番号を使用して、行全体からデータを読み取りましょう。

var rowValues = sheet.GetRow(1);// 1 is row index
 foreach (var rowValue in rowValues)
 {
     Console.Write(rowValue + "  ");
 }
var rowValues = sheet.GetRow(1);// 1 is row index
 foreach (var rowValue in rowValues)
 {
     Console.Write(rowValue + "  ");
 }
Dim rowValues = sheet.GetRow(1) ' 1 is row index
 For Each rowValue In rowValues
	 Console.Write(rowValue & "  ")
 Next rowValue
$vbLabelText   $csharpLabel

コード var rowValues = sheet.GetRow(1); ワークシート内のインデックス1(行2)に位置する単一行からすべての値を取得し、行ごとのデータへの効率的なアクセスを可能にします。 foreach ループで rowValues を反復処理している間、行内の各値が Console.Write(rowValue + " "); を使用してコンソールに出力されます。

このアプローチは、Excelファイルからの行データの抽出と表示を簡素化し、データ分析および報告の作業を支援します。 この方法では、範囲指定なしで複数のセルから値を読み取ることができます。

C#でExcel範囲を管理する方法: 図6

セルまたは範囲へのデータの書き込み

データをセルと範囲の両方に書き込むことができます。 まず、データを範囲に書き込むことにします。

var range = sheet["D2:D14"];
range.Value = "Prefer Not to Say"; // Change Gender Value
workbook.Save();
var range = sheet["D2:D14"];
range.Value = "Prefer Not to Say"; // Change Gender Value
workbook.Save();
Dim range = sheet("D2:D14")
range.Value = "Prefer Not to Say" ' Change Gender Value
workbook.Save()
$vbLabelText   $csharpLabel

コード var range = sheet["D2:D14"]; セル D2 から D14 までの範囲を選択し、一括データ修正を可能にします。 range.Valueを「Prefer Not to Say」に設定することで、指定された範囲内の各セルの性別の値を効率的に更新し、繰り返し作業を最小限に抑えます。

その後の workbook.Save(); コマンドは、データの一貫性と整合性を維持しながら、これらの変更の永続的なストレージを確保します。 このアプローチはバッチ更新を簡素化し、複数のセルで均一性を確保することで、データ管理の効率を向上させます。

では、特定のセルにデータを書き込みましょう。

sheet["B2"].Value = "John";
workbook.Save();
sheet["B2"].Value = "John";
workbook.Save();
sheet("B2").Value = "John"
workbook.Save()
$vbLabelText   $csharpLabel

コードシート["B2"].Value = "John"; Excelワークシート内のセルB2に直接「John」の値を割り当て、特定のセル値を更新するための簡潔で明確な方法を提供します。 このアプローチは、個々のセルの内容を変更するプロセスを簡素化し、コードの可読性と効率性を向上させます。

C#でExcel範囲を管理する方法: 図7 - C# Excel範囲

結論

結論として、IronXLを使用してC#でExcelの範囲操作を習得することは、データ処理、レポート生成、動的スプレッドシート作成などのタスクを容易にし、アプリケーションの効率と自動化機能を大幅に向上させます。

IronXLの強力なExcelファイルの読み取り、書き込み、および操作機能により、開発者はデータ処理を合理化し、数式、書式設定、統計分析などの高度な機能を活用できます。 さらに、IronXLは無料試用版を提供しており、さまざまなプロジェクト要件への柔軟性とスケーラビリティを確保しています。

リーガン・パン
ソフトウェアエンジニア
レーガンはリーディング大学で電子工学の学士号を取得しました。Iron Softwareに入社する前の仕事では、一つのタスクに集中して取り組んでいました。Iron Softwareでは、営業、技術サポート、製品開発、マーケティングのいずれにおいても広範な業務に携わることが最も楽しいと感じています。彼は、Iron Softwareライブラリを開発者がどのように使用しているかを理解し、その知識を使ってドキュメントを継続的に改善し、製品を開発することを楽しんでいます。
次へ >
C#でExcelファイルを操作する方法