C# Excel ファイルを解析

This article was translated from English: Does it need improvement?
Translated
View the article in English

アプリケーションビルドにExcelスプレッドシートを使用する場合、しばしばデータに基づいて結果を分析し、C#内でExcelファイルのデータを解析して必要な形式に変換し、正しい結果を得る必要があります。 C#環境でデータを異なる形式にパースするのは、IronXLの使用と以下の手順により簡単にできます。


C#でExcelファイルを解析する方法

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

  2. Workbookオブジェクトを開いてExcelファイルを追加します。

  3. 既定の Worksheet を選択してください。

  4. ExcelのWorkbookから値を読み取る。

  5. 値を正確に処理して表示してください。

    ステップ 1

IronXLをVisual Studio用にダウンロード

最初のステップは Visual Studio用IronXLをダウンロード またはインストール方法 NuGet開発プロジェクト向けの無料メソッドの両方。

Install-Package IronXL.Excel

チュートリアルの方法

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

次に、WorkBook.Load を使用して、ExcelファイルをC#プロジェクトにロードします。()IronXLの関数 次のようにExcelファイルのパスを指定するために1つの文字列パラメータを渡します:

//Load Excel file
WorkBook wb = WorkBook.Load("Path");
//Load Excel file
WorkBook wb = WorkBook.Load("Path");
'Load Excel file
Dim wb As WorkBook = WorkBook.Load("Path")
VB   C#

Excelファイルはwbに読み込まれます。 特定のWorkSheetを開くことができます。


3. Excelワークシートを開く

Excelファイルのワークシートを開くには、WorkBook.GetWorkSheetを使用します。()` 関数。 ワークシート名を指定する1つの文字列パラメーターが必要です。 このように使うことができます:

//specify WorkSheet
WorkSheet ws = Wb.GetWorkSheet("SheetName");
//specify WorkSheet
WorkSheet ws = Wb.GetWorkSheet("SheetName");
'specify WorkSheet
Dim ws As WorkSheet = Wb.GetWorkSheet("SheetName")
VB   C#

wb は私たちがステップ1で定義した WorkBook です。


4. Excelファイルからデータを取得

これで、オープンなExcelワークシートから、さまざまな方法で任意の種類のデータを簡単に取得できるようになりました。 以下の例では、特定のセルの値にアクセスし、文字列に解析する方法を示します:

//Access the Data by Cell Addressing
string val = ws ["Cell Address"].ToString();
//Access the Data by Cell Addressing
string val = ws ["Cell Address"].ToString();
'Access the Data by Cell Addressing
Dim val As String = ws ("Cell Address").ToString()
VB   C#

上記の行で ws は、ステップ2で定義されたワークシートです。これは簡単なアプローチですが、さらに詳細を読み、異なる例を参照することができます。 Excel ファイルのデータにアクセスします。


Excelデータを数値にパースする

次に、Excelファイルのデータを解析する方法について説明します。

まず初めに、数値型のExcelデータをどのように処理し、必要な形式に解析するかを見ていきます。 以下のIronXLのパーサー関数のリストを使用して、プロジェクトに適したものを選択してください。

データタイプ メソッド 説明
int ワークシート ["CellAddress"].IntValue Excelセルの値を`Int`に解析する必要があるときに使用されます。
Int32 (int32) WorkSheet ["CellAddress"].Int32 (int32)Value when we need to parse Excel cell value into `Int32 (int32)`.
Int64 (インターフェース64) WorkSheet ["CellAddress"].Int64 (インターフェース64)Value プロジェクトで大きな数値を使用したい場合。
浮動小数点数 WorkSheet["CellAddress"].FloatValue 小数点以下の値も重要な場合に使用されます。
ダブル WorkSheet ["CellAddress"].ダブルValue 精度の高い数値データを取得したい場合。
10進数 WorkSheet ["CellAddress"].10進数Value 小数点の後に桁数が多すぎる場合、最も高精度な結果を得たい場合は。

以下は、C#でこれらの関数を使用してExcelファイルのデータを解析する方法の例です。

/**
Parse into Numeric Values
anchor-parse-excel-data-into-numeric-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Parse Excel cell value into string
    string str_val = ws ["B3"].Value.ToString();
    //Parse Excel cell value into int32
    Int32 int32_val = ws ["G3"].Int32Value;
    //Parse Excel cell value into Decimal
    decimal decimal_val = ws ["E5"].DecimalValue;

    Console.WriteLine("Parse B3 Cell Value into String: {0}", str_val);
    Console.WriteLine("Parse G3 Cell Value into Int32: {0}", int32_val);
    Console.WriteLine("Parse E5 Cell Value into decimal: {0}", decimal_val);
    Console.ReadKey();
}
/**
Parse into Numeric Values
anchor-parse-excel-data-into-numeric-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //Parse Excel cell value into string
    string str_val = ws ["B3"].Value.ToString();
    //Parse Excel cell value into int32
    Int32 int32_val = ws ["G3"].Int32Value;
    //Parse Excel cell value into Decimal
    decimal decimal_val = ws ["E5"].DecimalValue;

    Console.WriteLine("Parse B3 Cell Value into String: {0}", str_val);
    Console.WriteLine("Parse G3 Cell Value into Int32: {0}", int32_val);
    Console.WriteLine("Parse E5 Cell Value into decimal: {0}", decimal_val);
    Console.ReadKey();
}
'''
'''Parse into Numeric Values
'''anchor-parse-excel-data-into-numeric-values
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'Parse Excel cell value into string
	Dim str_val As String = ws ("B3").Value.ToString()
	'Parse Excel cell value into int32
	Dim int32_val As Int32 = ws ("G3").Int32Value
	'Parse Excel cell value into Decimal
	Dim decimal_val As Decimal = ws ("E5").DecimalValue

	Console.WriteLine("Parse B3 Cell Value into String: {0}", str_val)
	Console.WriteLine("Parse G3 Cell Value into Int32: {0}", int32_val)
	Console.WriteLine("Parse E5 Cell Value into decimal: {0}", decimal_val)
	Console.ReadKey()
End Sub
VB   C#

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

ここで、Excelファイル sample.xlsx の値を見ることができます。


6. Excelデータをブール値に解析する

ExcelファイルデータをBoolean型に解析するために、IronXLはBoolValue関数を提供しています。 以下のように使用できます:

/**
Parse into Boolean Values
anchor-parse-excel-data-into-boolean-values
**/
bool Val = ws ["Cell Address"].BoolValue;
/**
Parse into Boolean Values
anchor-parse-excel-data-into-boolean-values
**/
bool Val = ws ["Cell Address"].BoolValue;
'''
'''Parse into Boolean Values
'''anchor-parse-excel-data-into-boolean-values
'''*
Dim Val As Boolean = ws ("Cell Address").BoolValue
VB   C#

上述の例で説明されている ws はワークシートです。 上記の関数は、値を True または False として返します。 注意:セルの値をブール型に解析したい場合、Excelファイルの値が(0 , 1) または (True , False) 形式であることを確認してください。


7. ExcelファイルをC#コレクションに解析する

IronXLを使用することにより、Excelファイルのデータを次の種類のCSharpコレクションに解析することができます:

データタイプ メソッド 説明
配列 WorkSheet ["From:To"].To配列() この関数は、Excelファイルのデータを配列に解析するために使用されます。データを配列に変換するExcelファイルのセル範囲を指定します。
データテーブル WorkSheet.Toデータテーブル() It is used to parse a complete Excel worksheet into データテーブル and uses the data as we need.
データセット WorkBook.Toデータセット() we can parse a complete Excel WorkBook into a データセット, in this way, the WorkSheets of Excel file becomes データテーブル of データセット.

各コレクションタイプにExcelファイルのデータを解析するそれぞれの例を一つずつ見ていきましょう。

エクセルデータを配列に解析する

IronXLは、指定された範囲のExcelファイルデータを配列に解析する簡単な方法を提供します。 この目的のために、データを配列に変換する From から To までのセルアドレスを指定します。 次のように実行することができます:

var array = WorkSheet ["From:To"].ToArray();
var array = WorkSheet ["From:To"].ToArray();
Dim array = WorkSheet ("From:To").ToArray()
VB   C#

配列から特定の項目にアクセスする場合、次のようにします:

string item = array [ItemIndex].Value.ToString();
string item = array [ItemIndex].Value.ToString();
Dim item As String = array (ItemIndex).Value.ToString()
VB   C#

それは、インデックスを使って簡単にアイテムにアクセスできることを明確に示しています。 Excelファイルのデータを配列に解析し、その中から特定の項目を選択する方法の例を見てみましょう。

/**
Parse into Array
anchor-parse-excel-data-into-array
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    var array = ws ["B6:F6"].ToArray();
    int item = array.Count();
    string total_items = array [0].Value.ToString();
    Console.WriteLine("First item in the array: {0}", item);
    Console.WriteLine("Total items from B6 to F6: {0}",total_items);
    Console.ReadKey();
}
/**
Parse into Array
anchor-parse-excel-data-into-array
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    var array = ws ["B6:F6"].ToArray();
    int item = array.Count();
    string total_items = array [0].Value.ToString();
    Console.WriteLine("First item in the array: {0}", item);
    Console.WriteLine("Total items from B6 to F6: {0}",total_items);
    Console.ReadKey();
}
'''
'''Parse into Array
'''anchor-parse-excel-data-into-array
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	Dim array = ws ("B6:F6").ToArray()
	Dim item As Integer = array.Count()
	Dim total_items As String = array (0).Value.ToString()
	Console.WriteLine("First item in the array: {0}", item)
	Console.WriteLine("Total items from B6 to F6: {0}",total_items)
	Console.ReadKey()
End Sub
VB   C#

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

Excelファイル sample.xlsx の範囲値、B6 から F6 までは次のようになります:

7.2. Excelワークシートをデータテーブルに解析する

IronXL の美しさは、特定の Excel WorkSheet を簡単に DataTable に変換できる点にあります。 この目的のために、.ToDataTable を使用できます。()次のようにIronXLの機能:

DataTable dt = WorkSheet.ToDataTable();
DataTable dt = WorkSheet.ToDataTable();
Dim dt As DataTable = WorkSheet.ToDataTable()
VB   C#

それはExcelワークシートをDataTable dtに解析します。 この場合、Excelファイルの最初の行をDataTableの列名として使用したい場合、次のように設定できます:

DataTable dt=WorkSheet.ToDataTable(True);
DataTable dt=WorkSheet.ToDataTable(True);
Dim dt As DataTable=WorkSheet.ToDataTable([True])
VB   C#

.ToDataTableのブールパラメーター()`関数は、Excelファイルの最初の行がDataTableのColumnNameになることを指定します。 次を使用しての作業にさらに深く取り組むことができます C# での ExcelWorksheet を DataTable に変換

以下は、Excelワークシートをデータテーブルに解析する方法の例です:

/**
Parse into DataTable
anchor-parse-excel-worksheet-into-datatable
**/
using IronXL;
using System.Data; 
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //parse sheet1 of sample.xlsx file into DataTable.
    //we set parameter true of ToDataTable() function,so first row of Excel file becomes columnname of DataTable
    DataTable dt = ws.ToDataTable(true); 
}
/**
Parse into DataTable
anchor-parse-excel-worksheet-into-datatable
**/
using IronXL;
using System.Data; 
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    //parse sheet1 of sample.xlsx file into DataTable.
    //we set parameter true of ToDataTable() function,so first row of Excel file becomes columnname of DataTable
    DataTable dt = ws.ToDataTable(true); 
}
'''
'''Parse into DataTable
'''anchor-parse-excel-worksheet-into-datatable
'''*
Imports IronXL
Imports System.Data
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	'parse sheet1 of sample.xlsx file into DataTable.
	'we set parameter true of ToDataTable() function,so first row of Excel file becomes columnname of DataTable
	Dim dt As DataTable = ws.ToDataTable(True)
End Sub
VB   C#

7.3. ExcelファイルをDataSetに解析する

完全なExcelファイルをDataSetに解析したい場合、この目的のために.ToDataSetメソッドを使用できます。()IronXLの関数 以下のように使用できます:

DataSet ds = WorkBook.ToDataSet();
DataSet ds = WorkBook.ToDataSet();
Dim ds As DataSet = WorkBook.ToDataSet()
VB   C#

注: ExcelファイルをDataSetに解析する場合、Excelファイル内のすべてのワークシートがこのDataSetのDataTableになります。 ExcelファイルをDataSetに解析する例を見てみましょう:

/**
Parse File into DataSet
anchor-parse-excel-file-into-dataset
**/
using IronXL;
using System.Data; 
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //parse WorkBook wb into DataSet
    DataSet ds = wb.ToDataSet(); 
    //we also can get DataTable from ds which is actually WorkSheet as:
    DataTable dt=ds.Tables [0];
}
/**
Parse File into DataSet
anchor-parse-excel-file-into-dataset
**/
using IronXL;
using System.Data; 
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    //parse WorkBook wb into DataSet
    DataSet ds = wb.ToDataSet(); 
    //we also can get DataTable from ds which is actually WorkSheet as:
    DataTable dt=ds.Tables [0];
}
'''
'''Parse File into DataSet
'''anchor-parse-excel-file-into-dataset
'''*
Imports IronXL
Imports System.Data
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	'parse WorkBook wb into DataSet
	Dim ds As DataSet = wb.ToDataSet()
	'we also can get DataTable from ds which is actually WorkSheet as:
	Dim dt As DataTable=ds.Tables (0)
End Sub
VB   C#

詳しくは、 エクセル SQL データセット これらのファイルを操作する。


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

C#のExcelドキュメント

IronXLのドキュメントを使用して、C#でExcelを操作し、プロジェクトで機能、クラス、名前空間などのすべてを活用しましょう。

C#のExcelドキュメント