C# で Excel ワークシートを開く
C#のExcelワークシート関数を使用して、Excelスプレッドシートを操作し、.xls
、.csv
、.tsv
、.xlsx
を含むすべてのファイルタイプを開く方法を学びましょう。 Excelワークシートを開き、そのデータを読み取り、プログラムによって操作することは、アプリケーションを開発している多くの人にとって非常に重要です。 コードの行数を減らし、応答時間を速くしたいすべての開発者へのソリューションはこちらです。
C#でExcelファイルを開く方法
- Excelファイルを開くためのC#ライブラリをインストール
- Excel ファイルを WorkBook オブジェクトにロード
- 開いたExcelファイルからワークシートを選択するさまざまな方法を探る
- 選択したWorkSheetオブジェクトからセルデータにアクセス
- 行と列の範囲からデータを取得する
How to Open Excel Worksheet in C#
-
Excelファイルを読み取るためにExcelライブラリをインストールしてください。
-
既存のExcelファイルを
Workbook
オブジェクトに読み込みます。 -
デフォルトのExcelワークシートを設定します。
-
Excel ワークブックから値を読み取る。
- 値を適切に処理し、表示してください。
ステップ 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
指定されたパスの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")
指定された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()
次に、開いたExcelのWorkSheet
からデータを取得する必要があります。
4. ワークシートからデータを取得
開かれたExcelのWorkSheet
からデータを取得する方法は次の通りです:
-
Excelの
WorkSheet
の特定のセルの値を取得します。 -
特定の範囲でデータを取得します。
-
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()
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()
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
このコードは次の出力を表示します:
Excelファイルsample.xlsx
の行[3].列[1]
およびC6
セルの値:
行と列のインデックスは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")
開いている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
上記のコードは、B2
からB10
までのデータを以下のように取得します。
Excelファイルsample.xlsx
のB2
からB10
までの値を見ることができます:
4.3. 行からデータを取得する
特定の行に対して範囲を記述することもできます。 例えば:
WorkSheet ["A1:E1"]
WorkSheet ["A1:E1"]
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet ["A1:E1"]
これは、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
上記のコードの出力は、開いているExcelのWorkSheet
の各セルの値を表示します。
チュートリアル クイック アクセス
APIリファレンスリソース
IronXL API Referenceリソースを、プロジェクトで使用するすべての関数やクラス、ならびに名前空間、メソッドフィールド、列挙型、および機能セットのガイドとして使用してください。
APIリファレンスリソース