C#でExcelファイルをインポートする方法
開発者として、Excelファイルからデータをインポートし、それを使用してアプリケーションおよびデータ管理の要件を満たす必要があることがよくあります。 多くのコード行を必要とせずに、IronXLは必要なデータを正確にC#プロジェクトに直接インポートし、それをプログラムによって操作する簡単な方法を提供します。
C#でExcelファイルをインポートする方法
- ExcelファイルをインポートするためのC#ライブラリをダウンロードしてインストール
- Excelファイルをインポートする準備をする
Load
メソッドを使用してスプレッドシートをインポートする- 直感的なAPIを使用してロードされたExcelファイルを編集する
- 編集済みのExcelファイルを様々な形式でエクスポート
ステップ 1
IronXL ライブラリでデータをインポートする
このチュートリアルで使用するIronXL Excelライブラリが提供する機能を使用してデータをインポートします。 ソフトウェアは開発用に無料で利用可能です。
DLLダウンロードを介してC#プロジェクトにインストールするか、NuGetパッケージを使用して移動する。
Install-Package IronXL.Excel
チュートリアルの方法
プロジェクト用のワークシートにアクセス
今日のプロジェクトのニーズに合わせて、ステップ1でインストールしたIronXLソフトウェアを使用し、ExcelデータをC#アプリケーションにインポートします。
ステップ2では、IronXLのWorkBook.Load()
関数を使用して、CSharpプロジェクトにExcel WorkBookを読み込みます。 この関数では、Excel WorkBookのパスを文字列パラメーターとして渡します。このように:
//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")
指定されたパスのExcelファイルがwb
に読み込まれます。
次に、プロジェクトにデータをインポートするExcelファイルの特定のワークシートにアクセスする必要があります。 この目的のために、IronXL の GetWorkSheet()
関数を使用できます。 この関数には、インポートするWorkBookのシートを指定するために、シート名を文字列パラメータとして渡します。
//specify sheet name of Excel WorkBook
WorkSheet ws = wb.GetWorkSheet("SheetName");
//specify sheet name of Excel WorkBook
WorkSheet ws = wb.GetWorkSheet("SheetName");
'specify sheet name of Excel WorkBook
Dim ws As WorkSheet = wb.GetWorkSheet("SheetName")
ワークシートはws
としてインポートされ、wb
は上記のコードサンプルで定義したワークブックです。
プロジェクトにExcelワークシートをインポートするには、以下のような別の方法もあります。
/**
Import WorkSheet
anchor-access-worksheet-for-project
**/
//by sheet indexing
WorkBook.WorkSheets [SheetIndex];
//get default WorkSheet
WorkBook.DefaultWorkSheet;
//get first WorkSheet
WorkBook.WorkSheets.First();
//for the first or default sheet:
WorkBook.WorkSheets.FirstOrDefault();
/**
Import WorkSheet
anchor-access-worksheet-for-project
**/
//by sheet indexing
WorkBook.WorkSheets [SheetIndex];
//get default WorkSheet
WorkBook.DefaultWorkSheet;
//get first WorkSheet
WorkBook.WorkSheets.First();
//for the first or default sheet:
WorkBook.WorkSheets.FirstOrDefault();
'''
'''Import WorkSheet
'''anchor-access-worksheet-for-project
'''*
'by sheet indexing
WorkBook.WorkSheets (SheetIndex)
'get default WorkSheet
WorkBook.DefaultWorkSheet
'get first WorkSheet
WorkBook.WorkSheets.First()
'for the first or default sheet:
WorkBook.WorkSheets.FirstOrDefault()
これで、指定されたExcelファイルからあらゆる種類のデータを簡単にインポートできます。 以下の方法で、プロジェクトにExcelファイルデータをインポートするすべての可能な側面を見てみましょう。
C#でExcelデータをインポート
これはプロジェクト内でExcelファイルのデータをインポートする基本的な側面です。
この目的のために、どのセルデータをインポートする必要があるかを指定するために、セルアドレッシングシステムを使用できます。 それは、Excelファイルの特定のセルアドレスの値を返します。
WorkSheet ["Cell Address"];
WorkSheet ["Cell Address"];
WorkSheet ("Cell Address")
行と列のインデックスを使用してExcelファイルからセルデータをインポートすることもできます。 このコード行は、指定された行および列のインデックスの値を返します。
WorkSheet.Rows [RowIndex].Columns [ColumnIndex]
WorkSheet.Rows [RowIndex].Columns [ColumnIndex]
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet.Rows [RowIndex].Columns [ColumnIndex]
インポートしたセルの値を変数に割り当てたい場合は、次のコードを使用できます。
/**
Import Data by Cell Address
anchor-import-excel-data-in-c-num
**/
//by cell addressing
string val = WorkSheet ["Cell Address"].ToString();
//by row and column indexing
string val = WorkSheet.Rows [RowIndex].Columns [ColumnIndex].Value.ToString();
/**
Import Data by Cell Address
anchor-import-excel-data-in-c-num
**/
//by cell addressing
string val = WorkSheet ["Cell Address"].ToString();
//by row and column indexing
string val = WorkSheet.Rows [RowIndex].Columns [ColumnIndex].Value.ToString();
'''
'''Import Data by Cell Address
'''anchor-import-excel-data-in-c-num
'''*
'by cell addressing
Dim val As String = WorkSheet ("Cell Address").ToString()
'by row and column indexing
Dim val As String = WorkSheet.Rows (RowIndex).Columns (ColumnIndex).Value.ToString()
上記の例では、行と列のインデックスは0から始まります。
特定の範囲のExcelデータをインポートする
特定の範囲でExcel WorkBookからデータをインポートしたい場合、range
関数を使用することで簡単に行うことができます。 範囲を定義するためには、開始セルと終了セルのアドレスを記述する必要があります。 この方法で、指定された範囲内にあるすべてのセルの値を返します。
WorkSheet ["starting Cell Address : Ending Cell Address"];
WorkSheet ["starting Cell Address : Ending Cell Address"];
WorkSheet ("starting Cell Address : Ending Cell Address")
Excel ファイル内の範囲を扱う詳細については、提供されているコード例をご覧ください。
/**
Import Data by Range
anchor-import-excel-data-of-specific-range
**/
using IronXL;
static void Main(string [] args)
{
//import Excel WorkBook
WorkBook wb = WorkBook.Load("sample.xlsx");
//specify WorkSheet
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//import data of specific cell
string val = ws ["A4"].Value.ToString();
Console.WriteLine("Import Value of A4 Cell address: {0}",val);
Console.WriteLine("import Values in Range From B3 To B9 :\n");
//import data in specific range
foreach (var item in ws ["B3:B9"])
{
Console.WriteLine(item.Value.ToString());
}
Console.ReadKey();
}
/**
Import Data by Range
anchor-import-excel-data-of-specific-range
**/
using IronXL;
static void Main(string [] args)
{
//import Excel WorkBook
WorkBook wb = WorkBook.Load("sample.xlsx");
//specify WorkSheet
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//import data of specific cell
string val = ws ["A4"].Value.ToString();
Console.WriteLine("Import Value of A4 Cell address: {0}",val);
Console.WriteLine("import Values in Range From B3 To B9 :\n");
//import data in specific range
foreach (var item in ws ["B3:B9"])
{
Console.WriteLine(item.Value.ToString());
}
Console.ReadKey();
}
'''
'''Import Data by Range
'''anchor-import-excel-data-of-specific-range
'''*
Imports Microsoft.VisualBasic
Imports IronXL
Shared Sub Main(ByVal args() As String)
'import Excel WorkBook
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
'specify WorkSheet
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'import data of specific cell
Dim val As String = ws ("A4").Value.ToString()
Console.WriteLine("Import Value of A4 Cell address: {0}",val)
Console.WriteLine("import Values in Range From B3 To B9 :" & vbLf)
'import data in specific range
For Each item In ws ("B3:B9")
Console.WriteLine(item.Value.ToString())
Next item
Console.ReadKey()
End Sub
上記のコードは次の出力を表示します:
Excelファイルsample.xlsx
の値:
集計関数によるExcelデータのインポート
Excelファイルに集計関数を適用し、その集計関数の結果データをインポートすることもできます。 以下はいくつかの異なる機能とその使用方法の例です。
- 合計()
//to find the sum of specific cell range
WorkSheet ["Starting Cell Address : Ending Cell Address"].Sum();
//to find the sum of specific cell range
WorkSheet ["Starting Cell Address : Ending Cell Address"].Sum();
'to find the sum of specific cell range
WorkSheet ("Starting Cell Address : Ending Cell Address").Sum()
- Average()
//to find the average of specific cell range
WorkSheet ["Starting Cell Address : Ending Cell Address"].Avg()
//to find the average of specific cell range
WorkSheet ["Starting Cell Address : Ending Cell Address"].Avg()
'to find the average of specific cell range
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet ["Starting Cell Address : Ending Cell Address"].Avg()
- Min()
//to find the Min In specific cell range
WorkSheet ["Starting Cell Address : Ending Cell Address"].Min()
//to find the Min In specific cell range
WorkSheet ["Starting Cell Address : Ending Cell Address"].Min()
'to find the Min In specific cell range
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet ["Starting Cell Address : Ending Cell Address"].Min()
Max()
//to find the Max in specific cell range
WorkSheet ["Starting Cell Address : Ending Cell Address"].Max()
//to find the Max in specific cell range
WorkSheet ["Starting Cell Address : Ending Cell Address"].Max()
'to find the Max in specific cell range
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet ["Starting Cell Address : Ending Cell Address"].Max()
さまざまな方法でデータを取得する方法については、C# 用 Excel の集計関数に関する詳細を読むことができます。
これらの機能を適用してExcelファイルのデータをインポートする方法の例を見てみましょう。
/**
Import Data by Aggregate Function
anchor-import-excel-data-by-aggregate-functions
**/
using IronXL;
static void Main(string [] args)
{
//Import Excel file
WorkBook wb = WorkBook.Load("sample.xlsx");
//Specify WorkSheet
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Import Excel file data by applying aggregate functions
decimal Sum = ws ["D2:D9"].Sum();
decimal Avg = ws ["D2:D9"].Avg();
decimal Min = ws ["D2:D9"].Min();
decimal Max = ws ["D2:D9"].Max();
Console.WriteLine("Sum From D2 To D9: {0}", Sum);
Console.WriteLine("Avg From D2 To D9: {0}", Avg);
Console.WriteLine("Min From D2 To D9: {0}", Min);
Console.WriteLine("Max From D2 To D9: {0}", Max);
Console.ReadKey();
}
/**
Import Data by Aggregate Function
anchor-import-excel-data-by-aggregate-functions
**/
using IronXL;
static void Main(string [] args)
{
//Import Excel file
WorkBook wb = WorkBook.Load("sample.xlsx");
//Specify WorkSheet
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Import Excel file data by applying aggregate functions
decimal Sum = ws ["D2:D9"].Sum();
decimal Avg = ws ["D2:D9"].Avg();
decimal Min = ws ["D2:D9"].Min();
decimal Max = ws ["D2:D9"].Max();
Console.WriteLine("Sum From D2 To D9: {0}", Sum);
Console.WriteLine("Avg From D2 To D9: {0}", Avg);
Console.WriteLine("Min From D2 To D9: {0}", Min);
Console.WriteLine("Max From D2 To D9: {0}", Max);
Console.ReadKey();
}
'''
'''Import Data by Aggregate Function
'''anchor-import-excel-data-by-aggregate-functions
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
'Import Excel file
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
'Specify WorkSheet
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'Import Excel file data by applying aggregate functions
Dim Sum As Decimal = ws ("D2:D9").Sum()
Dim Avg As Decimal = ws ("D2:D9").Avg()
Dim Min As Decimal = ws ("D2:D9").Min()
Dim Max As Decimal = ws ("D2:D9").Max()
Console.WriteLine("Sum From D2 To D9: {0}", Sum)
Console.WriteLine("Avg From D2 To D9: {0}", Avg)
Console.WriteLine("Min From D2 To D9: {0}", Min)
Console.WriteLine("Max From D2 To D9: {0}", Max)
Console.ReadKey()
End Sub
上記のコードは次の出力を生成します:
そして、ファイルsample.xlsx
にはこれらの値が含まれています:
6. 完全なExcelファイルデータをインポートする
C#プロジェクトにExcelファイルのデータを完全にインポートしたい場合、まず読み込んだWorkBookをDataSetに解析することができます。 この方法で、完全なExcelデータがDataSetにインポートされ、ExcelファイルのWorkSheetsがそのDataSetのDataTablesになります。 ここにその動作があります:
//import WorkBook into dataset
DataSet ds = WorkBook.ToDataSet();
//import WorkBook into dataset
DataSet ds = WorkBook.ToDataSet();
'import WorkBook into dataset
Dim ds As DataSet = WorkBook.ToDataSet()
このようにして、指定されたWorkSheetは、必要に応じて使用できるDataSetにインポートされます。
しばしば、Excelファイルの最初の列はColumnNameとして使用されます。 この場合、最初の列を DataTable ColumnName として設定する必要があります。 これを行うために、IronXL の ToDataSet()
関数のブールパラメーターを次のように設定します。
ToDataSet(true);
ToDataSet(true);
ToDataSet(True)
これは、Excelファイルの最初の列をDataTableのColumnNameにします。
次の例では、Excelデータをデータセットにインポートし、Excelワークシートの最初の列をDataTableのカラム名として使用する方法を完全に示します。
/**
Import to Dataset
anchor-import-complete-excel-file-data
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
DataSet ds = new DataSet();
ds = wb.ToDataSet(true);
Console.WriteLine("Excel file data imported to dataset successfully.");
Console.ReadKey();
}
/**
Import to Dataset
anchor-import-complete-excel-file-data
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
DataSet ds = new DataSet();
ds = wb.ToDataSet(true);
Console.WriteLine("Excel file data imported to dataset successfully.");
Console.ReadKey();
}
'''
'''Import to Dataset
'''anchor-import-complete-excel-file-data
'''*
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 ds As New DataSet()
ds = wb.ToDataSet(True)
Console.WriteLine("Excel file data imported to dataset successfully.")
Console.ReadKey()
End Sub
Excel ドataset と Datatable の関数を扱うのは複雑な場合がありますが、ファイルデータを C# プロジェクトに組み込むための例をもっと用意しています。
ライブラリ クイック アクセス
IronXLリファレンスを探る
IronXLのAPIリファレンス全書にて、セル、範囲、データセット、およびデータテーブルを通じてExcelデータを取得する方法について詳しく学ぶことができます。
IronXLリファレンスを探る