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

C#でExcelレンジを管理する方法

Excelファイルをプログラムで操作することは、C#アプリケーションの効率と自動化機能を大幅に向上させることができます。 レポートの作成、データの処理、または動的に複雑なスプレッドシートを作成する場合でも、Excelファイルの操作をマスターすることは重要です。 このチュートリアルでは、Excelの範囲を操作することに焦点を当てます。 We'll cover how to write, read, and manipulate ranges within an Excel file.

C#でExcelの範囲を読む方法

  1. Excelファイルを処理するためにIronXLライブラリをインストールします。
  2. ワークブックをロードし、ワークシートを指定します。
  3. 読み取るセル範囲を選択します。
  4. 指定された範囲からデータを抽出して読み取ります。

IronXLとは?

IronXLは、C#でのExcelファイル操作を簡素化する総合的なライブラリであり、スプレッドシートデータのシームレスな統合と操作のための多くの機能を提供します。 Its capabilities include reading, writing, and modifying Excel files without requiring Microsoft Excel installation, enabling cross-platform compatibility.

IronXL facilitates the extraction of data from specific cells, ranges, or entire worksheets, along with advanced functionalities such as formatting, styling, and conditional formatting. 計算、数式、統計分析のサポートにより、IronXLは開発者がプログラムでExcel操作を効率的に処理できるようにし、C#アプリケーション内でのデータ中心のタスクの自動化に不可欠なツールとなります。

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

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

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

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

Install-Package IronXL.Excel

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

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

名前空間を追加する

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

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

Excelワークブックをロードする

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

static void Main(string[] args)
{
    // Load an existing Excel workbook
    var workbook = WorkBook.Load("test_excel.xlsx");

    // Retrieve the specified worksheet from the workbook
    var sheet = workbook.GetWorkSheet("Sheet1");
}
static void Main(string[] args)
{
    // Load an existing Excel workbook
    var workbook = WorkBook.Load("test_excel.xlsx");

    // Retrieve the specified worksheet from the workbook
    var sheet = workbook.GetWorkSheet("Sheet1");
}
Shared Sub Main(ByVal args() As String)
	' Load an existing Excel workbook
	Dim workbook = WorkBook.Load("test_excel.xlsx")

	' Retrieve the specified worksheet from the workbook
	Dim sheet = workbook.GetWorkSheet("Sheet1")
End Sub
$vbLabelText   $csharpLabel

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

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

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

範囲からデータを読む

次に、指定されたセル範囲からデータを読み取ります。

// Define a range from cell A2 to G10 in the worksheet
var range = sheet["A2:G10"];

// Iterate over each cell in the range and output its value
foreach (var item in range)
{
    Console.WriteLine(item);
}
// Define a range from cell A2 to G10 in the worksheet
var range = sheet["A2:G10"];

// Iterate over each cell in the range and output its value
foreach (var item in range)
{
    Console.WriteLine(item);
}
' Define a range from cell A2 to G10 in the worksheet
Dim range = sheet("A2:G10")

' Iterate over each cell in the range and output its value
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の数式を実装しましょう。

// Define a range from cell F2 to F42 for statistical analysis
var range = sheet["F2:F42"];

// Output the minimum age within the range
Console.WriteLine($"Minimum Age: {range.Min()}");

// Output the maximum age within the range
Console.WriteLine($"Maximum Age: {range.Max()}");

// Output the average age, casting the average value to an integer
Console.WriteLine($"Average Age: {(int)range.Avg()}");
// Define a range from cell F2 to F42 for statistical analysis
var range = sheet["F2:F42"];

// Output the minimum age within the range
Console.WriteLine($"Minimum Age: {range.Min()}");

// Output the maximum age within the range
Console.WriteLine($"Maximum Age: {range.Max()}");

// Output the average age, casting the average value to an integer
Console.WriteLine($"Average Age: {(int)range.Avg()}");
Imports System

' Define a range from cell F2 to F42 for statistical analysis
Dim range = sheet("F2:F42")

' Output the minimum age within the range
Console.WriteLine($"Minimum Age: {range.Min()}")

' Output the maximum age within the range
Console.WriteLine($"Maximum Age: {range.Max()}")

' Output the average age, casting the average value to an integer
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

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

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

// Retrieve the value from cell B2 in the worksheet
var read_from_single_cell = sheet["B2"];

// Output the value in cell B2
Console.WriteLine($"The Value in Cell B2 is: {read_from_single_cell}");
// Retrieve the value from cell B2 in the worksheet
var read_from_single_cell = sheet["B2"];

// Output the value in cell B2
Console.WriteLine($"The Value in Cell B2 is: {read_from_single_cell}");
' Retrieve the value from cell B2 in the worksheet
Dim read_from_single_cell = sheet("B2")

' Output the value in cell 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

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

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

// Retrieve values from the column at index 2 (C column) 
var columnValues = sheet.GetColumn(2); // 2 is column index

// Iterate over each value in the column and output it
foreach (var columnValue in columnValues)
{
    Console.WriteLine(columnValue);
}
// Retrieve values from the column at index 2 (C column) 
var columnValues = sheet.GetColumn(2); // 2 is column index

// Iterate over each value in the column and output it
foreach (var columnValue in columnValues)
{
    Console.WriteLine(columnValue);
}
' Retrieve values from the column at index 2 (C column) 
Dim columnValues = sheet.GetColumn(2) ' 2 is column index

' Iterate over each value in the column and output it
For Each columnValue In columnValues
	Console.WriteLine(columnValue)
Next columnValue
$vbLabelText   $csharpLabel

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

columnValuesを反復処理するforeachループを通じて、列内の各値がConsole.WriteLine(columnValue);を使用してコンソールに印刷されます。 このアプローチは、Excelファイルからのコラムデータの処理と表示を容易にし、データ分析タスクを合理化します。

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

あるいは、インデックスの代わりに列名を使用して列からデータを読み取ることもできます。 次の例を考えてみましょう。

// Retrieve values from the column with name "C"
var columnValues = sheet.GetColumn("C");
// Retrieve values from the column with name "C"
var columnValues = sheet.GetColumn("C");
' Retrieve values from the column with name "C"
Dim columnValues = sheet.GetColumn("C")
$vbLabelText   $csharpLabel

このようにして、いくつかの列を指定することができます。

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

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

// Retrieve values from the row at index 1 (Row 2)
var rowValues = sheet.GetRow(1); // 1 is row index

// Iterate over each value in the row and output it
foreach (var rowValue in rowValues)
{
    Console.Write(rowValue + "  ");
}
// Retrieve values from the row at index 1 (Row 2)
var rowValues = sheet.GetRow(1); // 1 is row index

// Iterate over each value in the row and output it
foreach (var rowValue in rowValues)
{
    Console.Write(rowValue + "  ");
}
' Retrieve values from the row at index 1 (Row 2)
Dim rowValues = sheet.GetRow(1) ' 1 is row index

' Iterate over each value in the row and output it
For Each rowValue In rowValues
	Console.Write(rowValue & "  ")
Next rowValue
$vbLabelText   $csharpLabel

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

このアプローチは、Excelファイルからの行データの抽出と表示を簡素化し、データ分析とレポート作成タスクを支援します。 このようにして、範囲指定なしで複数のセルから値を読み取ることができます。

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

セルまたは範囲にデータを書き込む

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

// Select a range from D2 to D14 for modification
var range = sheet["D2:D14"];

// Set the value for each cell in the range
range.Value = "Prefer Not to Say"; // Change Gender Value

// Save the modified workbook to persist changes
workbook.Save();
// Select a range from D2 to D14 for modification
var range = sheet["D2:D14"];

// Set the value for each cell in the range
range.Value = "Prefer Not to Say"; // Change Gender Value

// Save the modified workbook to persist changes
workbook.Save();
' Select a range from D2 to D14 for modification
Dim range = sheet("D2:D14")

' Set the value for each cell in the range
range.Value = "Prefer Not to Say" ' Change Gender Value

' Save the modified workbook to persist changes
workbook.Save()
$vbLabelText   $csharpLabel

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

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

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

// Set the value for cell B2
sheet["B2"].Value = "John";

// Save the workbook to persist the changes
workbook.Save();
// Set the value for cell B2
sheet["B2"].Value = "John";

// Save the workbook to persist the changes
workbook.Save();
' Set the value for cell B2
sheet("B2").Value = "John"

' Save the workbook to persist the changes
workbook.Save()
$vbLabelText   $csharpLabel

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

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

結論

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

IronXLの強力な機能により、Excelファイルの読み書きや操作を簡素化し、数式、書式設定、統計分析などの高度な機能を活用できます。 さらに、IronXLは無料トライアルも提供しており、さまざまなプロジェクト要件に柔軟性と拡張性を確保します。

よくある質問

C#でExcel範囲を操作するにはどのように始めれば良いですか?

C#でExcel範囲を操作し始めるには、NuGetパッケージマネージャーを使用してIronXLライブラリをインストールします。コマンドは次のとおりです:Install-Package IronXL.Excel。その後、IronXLの包括的なAPIを使用してExcelワークブックのロードや範囲の操作を開始できます。

IronXLを使用してExcelワークブックをどのようにロードしますか?

IronXLでExcelワークブックをロードするには、WorkBook.Loadメソッドを使用し、ファイル名を引数として渡します。例:var workbook = WorkBook.Load('test_excel.xlsx');

IronXLで特定のセル範囲を読み取るためにどのようなメソッドがありますか?

IronXLでは、sheet['A2:G10']のような構文を使用して範囲を定義し、それを反復処理することにより、各セルの値にアクセスすることで特定のセル範囲を読み取れます。

Excel範囲内のデータで統計分析を行うにはどうすればよいですか?

IronXLを使用して、範囲を選択し、range.Min()range.Max()range.Avg()といったメソッドを適用して最小値、最大値、平均値を計算するなど、統計分析が可能です。

IronXLを使用して特定のセルにデータを書く手順は何ですか?

IronXLで特定のセルにデータを書くには、例えばsheet['B2'].Value = 'John';のように直接値をセルに割り当て、その後ワークブックを保存して変更を維持します。

IronXLで範囲を指定せずに列全体のデータを読み取れますか?

はい、IronXLは、sheet.GetColumn(index)sheet.GetColumn('C')を使用して列全体を読み取ることを可能にし、インデックスまたは列名を使用してデータを取得することができます。

IronXLを使用した場合、行全体からデータを抽出する方法は?

IronXLで行全体からデータを抽出するには、sheet.GetRow(index)を使用し、取得した値を反復処理してデータにアクセスします。

Excel操作におけるIronXLの高度な機能には何がありますか?

IronXLは、フォーマット、スタイリング、条件付きフォーマット、計算および数式のサポートなどの高度な機能を提供し、C#アプリケーション内でExcelファイル操作の能力を強化します。

購入前にIronXLを試すことは可能ですか?

はい、IronXLは無料の試用版を提供しており、これにより開発者はその機能を探索し、プロジェクトへの適合性を初期費用なしで判断することができます。

C#アプリケーションでの自動化をIronXLはどのように強化しますか?

IronXLは、プログラムでExcelファイルをシームレスに操作可能にすることで、データ処理、レポート生成、動的なスプレッドシート作成のようなタスクにおいて、Microsoft Excelのインストールを必要とせずにC#アプリケーションの自動化を強化します。

Curtis Chau
テクニカルライター

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

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