C# で Excel ワークシートを開く

チャクニット・ビン
チャクニット・ビン
2020年6月17日
更新済み 2024年10月20日
共有:
This article was translated from English: Does it need improvement?
Translated
View the article in English

C#のExcelワークシート関数を使用して、Excelスプレッドシートを操作し、.xls.csv.tsv.xlsxを含むすべてのファイルタイプを開く方法を学びましょう。 Excelワークシートを開き、そのデータを読み取り、プログラムによって操作することは、アプリケーションを開発している多くの人にとって非常に重要です。 コードの行数を減らし、応答時間を速くしたいすべての開発者へのソリューションはこちらです。


How to Open Excel Worksheet in C#

  1. Excelファイルを読み取るためにExcelライブラリをインストールしてください。

  2. 既存のExcelファイルをWorkbookオブジェクトに読み込みます。

  3. デフォルトのExcelワークシートを設定します。

  4. Excel ワークブックから値を読み取る。

  5. 値を適切に処理し、表示してください。

    ステップ 1

Excel C#ライブラリにアクセス

Excel C# ライブラリをDLL経由でアクセスするか、お好みのNuGetマネージャーを使用してインストールしてください。 IronXLライブラリにアクセスしてプロジェクトに追加したら、以下のすべての関数を使用してC#でExcelワークシートを開くことができます。

Install-Package IronXL.Excel

チュートリアルの方法

エクセルファイルを読み込む

プロジェクトにExcelファイルをロードするために、IronXLのWorkBook.Load()関数を使用します。 この関数は、開くExcelファイルのパスとなる文字列パラメータを必要とします。 こちらをご覧ください:

WorkBook wb = WorkBook.Load("Path");//Excel file path
WorkBook wb = WorkBook.Load("Path");//Excel file path
Dim wb As WorkBook = WorkBook.Load("Path") 'Excel file path
$vbLabelText   $csharpLabel

指定されたパスのExcelファイルがwbにロードされます。 次に、開くExcelワークシートを指定する必要があります。


エクセルワークシートを開く

Excelファイルの特定のWorkSheetを開くために、IronXLはWorkBook.GetWorkSheet()関数を提供します。 これを使用すると、名前によって簡単にワークシートを開くことができます。

WorkSheet ws = WorkBook.GetWorkSheet("SheetName");
WorkSheet ws = WorkBook.GetWorkSheet("SheetName");
Dim ws As WorkSheet = WorkBook.GetWorkSheet("SheetName")
$vbLabelText   $csharpLabel

指定されたWorkSheetは、すべてのデータと共にwsで開きます。 Excelファイルの特定のWorkSheetを開く他の方法もいくつかあります。

/**
Open Excel Worksheet
anchor-open-excel-worksheet
**/
//by sheet index
WorkSheet ws = wb.WorkSheets [0];
//for the default
WorkSheet ws = wb.DefaultWorkSheet; 
//for the first sheet: 
WorkSheet ws = wb.WorkSheets.First();
//for the first or default sheet:
WorkSheet ws = wb.WorkSheets.FirstOrDefault();
/**
Open Excel Worksheet
anchor-open-excel-worksheet
**/
//by sheet index
WorkSheet ws = wb.WorkSheets [0];
//for the default
WorkSheet ws = wb.DefaultWorkSheet; 
//for the first sheet: 
WorkSheet ws = wb.WorkSheets.First();
//for the first or default sheet:
WorkSheet ws = wb.WorkSheets.FirstOrDefault();
'''
'''Open Excel Worksheet
'''anchor-open-excel-worksheet
'''*
'by sheet index
Dim ws As WorkSheet = wb.WorkSheets (0)
'for the default
Dim ws As WorkSheet = wb.DefaultWorkSheet
'for the first sheet: 
Dim ws As WorkSheet = wb.WorkSheets.First()
'for the first or default sheet:
Dim ws As WorkSheet = wb.WorkSheets.FirstOrDefault()
$vbLabelText   $csharpLabel

次に、開いたExcelのWorkSheetからデータを取得する必要があります。


4. ワークシートからデータを取得

開かれたExcelのWorkSheetからデータを取得する方法は次の通りです:

  1. ExcelのWorkSheetの特定のセルの値を取得します。

  2. 特定の範囲でデータを取得します。

  3. WorkSheetからすべてのデータを取得します。

    それでは、これらの例を用いて、さまざまな方法でデータを取得する方法を一つずつ見ていきましょう:

4.1. 特定のセル値を取得

ExcelのWorkSheetからデータを取得する最初の方法は、特定のセルの値を取得することです。 以下のようにアクセスできます:

string val = ws ["Cell Address"].ToString();
string val = ws ["Cell Address"].ToString();
Dim val As String = ws ("Cell Address").ToString()
$vbLabelText   $csharpLabel

wsは、次の例で示すように、ExcelファイルのWorkSheetです。 特定のセル値は、「行インデックス」および「列インデックス」を指定することでアクセスすることもできます。

string val=ws.Rows [RowIndex].Columns [ColumnIndex].Value.ToString();
string val=ws.Rows [RowIndex].Columns [ColumnIndex].Value.ToString();
Dim val As String=ws.Rows (RowIndex).Columns (ColumnIndex).Value.ToString()
$vbLabelText   $csharpLabel

C#プロジェクトでExcelファイルを開き、特定のセル値を取得する方法の例を見てみましょう。

/**
Get Cell Value
anchor-get-specific-cell-value
**/
using IronXL;
static void Main(string [] args)
{
    //Load Excel file
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //Open WorkSheet
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Get value By Cell Address
    Int32 int_val= ws ["C6"].Int32Value;
    //Get value by Row and Column Address
    string str_val=ws.Rows [3].Columns [1].Value.ToString();

    Console.WriteLine("Getting Value by Cell Address: {0}",int_val);
    Console.WriteLine("Getting Value by Row and Column Indexes: {0}",str_val);
    Console.ReadKey();
}
/**
Get Cell Value
anchor-get-specific-cell-value
**/
using IronXL;
static void Main(string [] args)
{
    //Load Excel file
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //Open WorkSheet
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Get value By Cell Address
    Int32 int_val= ws ["C6"].Int32Value;
    //Get value by Row and Column Address
    string str_val=ws.Rows [3].Columns [1].Value.ToString();

    Console.WriteLine("Getting Value by Cell Address: {0}",int_val);
    Console.WriteLine("Getting Value by Row and Column Indexes: {0}",str_val);
    Console.ReadKey();
}
'''
'''Get Cell Value
'''anchor-get-specific-cell-value
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	'Load Excel file
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	'Open WorkSheet
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'Get value By Cell Address
	Dim int_val As Int32= ws ("C6").Int32Value
	'Get value by Row and Column Address
	Dim str_val As String=ws.Rows (3).Columns (1).Value.ToString()

	Console.WriteLine("Getting Value by Cell Address: {0}",int_val)
	Console.WriteLine("Getting Value by Row and Column Indexes: {0}",str_val)
	Console.ReadKey()
End Sub
$vbLabelText   $csharpLabel

このコードは次の出力を表示します:

1output related to 4.1. 特定のセル値を取得

Excelファイルsample.xlsx行[3].列[1]およびC6セルの値:

1excel related to 4.1. 特定のセル値を取得

行と列のインデックスは0から始まります。

ExcelのWorkSheetsを開いて特定のコールデータを取得し、既に開かれているExcelワークシートからどのようにExcelデータをC#で読むかについてさらに詳しく読むことができます。

4.2. 特定の範囲からデータを取得する

それでは、IronXLを使用して開かれたExcelのWorkSheetから特定の範囲のデータを取得する方法を見てみましょう。

IronXLは特定の範囲でデータを取得するためのインテリジェントな方法を提供します。 単にfromからtoの値を指定します:

WorkSheet ["From Cell Address : To Cell Address"];
WorkSheet ["From Cell Address : To Cell Address"];
WorkSheet ("From Cell Address : To Cell Address")
$vbLabelText   $csharpLabel

開いているExcel WorkSheetからデータを取得するために、rangeを使用する方法の例を見てみましょう:

/**
Get Data from Range
anchor-get-data-from-specific-range
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //specify the range 
    foreach (var cell in ws ["B2:B10"])
    {
        Console.WriteLine("value is: {0}", cell.Text);
    }
    Console.ReadKey();
}
/**
Get Data from Range
anchor-get-data-from-specific-range
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //specify the range 
    foreach (var cell in ws ["B2:B10"])
    {
        Console.WriteLine("value is: {0}", cell.Text);
    }
    Console.ReadKey();
}
'''
'''Get Data from Range
'''anchor-get-data-from-specific-range
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'specify the range 
	For Each cell In ws ("B2:B10")
		Console.WriteLine("value is: {0}", cell.Text)
	Next cell
	Console.ReadKey()
End Sub
$vbLabelText   $csharpLabel

上記のコードは、B2からB10までのデータを以下のように取得します。

2output related to 4.2. 特定の範囲からデータを取得する

Excelファイルsample.xlsxB2からB10までの値を見ることができます:

2excel related to 4.2. 特定の範囲からデータを取得する

4.3. 行からデータを取得する

特定の行に対して範囲を記述することもできます。 例えば:

WorkSheet ["A1:E1"]
WorkSheet ["A1:E1"]
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet ["A1:E1"]
$vbLabelText   $csharpLabel

これは、A1からE1までのすべての値を表示します。 C# Excel Rangesおよびさまざまな行と列の識別を操作する方法について詳しく読む。

ワークシートから全データを取得する

IronXLを使用すると、開いているExcel WorkSheetからすべてのセルデータを取得するのも簡単です。 このタスクでは、行と列のインデックスを使って各セルの値にアクセスする必要があります。 次の例を見てみましょう。ここでは、すべてのWorkSheetセルをトラバースして、その値にアクセスします。

この例では、基本的に2つのループが作動しています。一つはExcelのWorkSheet の各行を巡回するためのもので、もう一つは特定の行の各列を巡回するためのものです。 このようにして、各セルの値に簡単にアクセスすることができます。

/**
Get All Data
anchor-get-all-data-from-worksheet
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample2.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //access all rows of open Excel WorkSheet
    for (int i = 0; i < ws.Rows.Count(); i++)
    {    
        //access all columns of specific row
        for (int j = 0; j < ws.Columns.Count(); j++)
        {
            //Access each cell for specified column
            Console.WriteLine(ws.Rows [i].Columns [j].Value.ToString());
        }
    }
    Console.ReadKey();
}
/**
Get All Data
anchor-get-all-data-from-worksheet
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample2.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //access all rows of open Excel WorkSheet
    for (int i = 0; i < ws.Rows.Count(); i++)
    {    
        //access all columns of specific row
        for (int j = 0; j < ws.Columns.Count(); j++)
        {
            //Access each cell for specified column
            Console.WriteLine(ws.Rows [i].Columns [j].Value.ToString());
        }
    }
    Console.ReadKey();
}
'''
'''Get All Data
'''anchor-get-all-data-from-worksheet
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample2.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'access all rows of open Excel WorkSheet
	For i As Integer = 0 To ws.Rows.Count() - 1
		'access all columns of specific row
		For j As Integer = 0 To ws.Columns.Count() - 1
			'Access each cell for specified column
			Console.WriteLine(ws.Rows (i).Columns (j).Value.ToString())
		Next j
	Next i
	Console.ReadKey()
End Sub
$vbLabelText   $csharpLabel

上記のコードの出力は、開いているExcelのWorkSheetの各セルの値を表示します。


チュートリアル クイック アクセス

Documentation related to チュートリアル クイック アクセス

APIリファレンスリソース

IronXL API Referenceリソースを、プロジェクトで使用するすべての関数やクラス、ならびに名前空間、メソッドフィールド、列挙型、および機能セットのガイドとして使用してください。

APIリファレンスリソース
チャクニット・ビン
ソフトウェアエンジニア
ChaknithはIronXLとIronBarcodeで作業しています。彼はC#と.NETに深い専門知識を持ち、ソフトウェアの改善と顧客サポートを支援しています。ユーザーとの対話から得た彼の洞察は、より良い製品、文書、および全体的な体験に貢献しています。