C# Excel 相互運用性の回避策
多くのプロジェクトでは、Excelを使用して明確にコミュニケーションを取りますが、Microsoft.Office.Interop.Excelを使用している場合、複雑なコード行に直面することが多いでしょう。 このチュートリアルでは、C# Excel Interopの代わりにIronXLを使用して、Interopを使わずにプロジェクトを完成させる方法を紹介します。 Excelファイルデータを使用したり、Excelファイルを作成、編集、操作することがすべてC#プログラミングで可能です。
C# Excel 相互運用性なし
- Excel No Interop ライブラリをダウンロード
- C#でExcelファイルにアクセスする
- 新しい Excel ファイルを作成し、プログラムでデータを挿入する
- 既存のファイルを変更したり、セルの値を更新および置換したり、行を削除したりします
Excel Interop を代替的に使用する方法
- ExcelライブラリをインストールしてExcelファイルを処理します。
Workbookを開いて現在のExcelファイルを追加します。- デフォルトのワークシートを設定します。
- Excelワークブックから値を読み取ります。
- 処理して値を表示します。
ステップ1
1. IronXL ライブラリをダウンロード
IronXLライブラリをダウンロードまたはNuGetでインストールして無料ライブラリにアクセスし、Interopを使わずにこのチュートリアルをステップバイステップで進めてください。プロジェクトを始動させたい場合、ライセンスも利用可能です。
Install-Package IronXL.Excel
チュートリアル
2. Excelファイルデータにアクセス
ビジネスアプリケーションを開発するには、Excelファイルからのデータへの簡単で完璧なアクセスと、それらをさまざまな要件に従ってプログラム的に操作する能力が必要です。 IronXLを使用して、特定のExcelファイルの読み取りを可能にするWorkBook.Load()関数を使用します。
WorkBookにアクセスした後、WorkBook.GetWorkSheet()関数を使って特定のワークシートを選択できます。 これで、すべてのExcelファイルデータが利用可能です。 次の例で、これらの関数をどのように使用してC#プロジェクトでExcelファイルデータを取得したかを見ることができます。
// Import the IronXL library to access its functionality
using IronXL;
static void Main(string[] args)
{
// Access Excel file
WorkBook wb = WorkBook.Load("sample.xlsx");
// Access WorkSheet of Excel file
WorkSheet ws = wb.GetWorkSheet("Sheet1");
// Get a specific cell value, convert it to a string, and print it
string a = ws["A5"].Value.ToString();
Console.WriteLine("Getting Single Value:\n\n Value of Cell A5: {0}", a);
Console.WriteLine("\nGetting Many Cells Value using Loop:\n");
// Get multiple cell values using range function and iterate through them
foreach (var cell in ws["B2:B10"])
{
Console.WriteLine(" Value is: {0}", cell.Text);
}
Console.ReadKey(); // Pause the console to view output
}// Import the IronXL library to access its functionality
using IronXL;
static void Main(string[] args)
{
// Access Excel file
WorkBook wb = WorkBook.Load("sample.xlsx");
// Access WorkSheet of Excel file
WorkSheet ws = wb.GetWorkSheet("Sheet1");
// Get a specific cell value, convert it to a string, and print it
string a = ws["A5"].Value.ToString();
Console.WriteLine("Getting Single Value:\n\n Value of Cell A5: {0}", a);
Console.WriteLine("\nGetting Many Cells Value using Loop:\n");
// Get multiple cell values using range function and iterate through them
foreach (var cell in ws["B2:B10"])
{
Console.WriteLine(" Value is: {0}", cell.Text);
}
Console.ReadKey(); // Pause the console to view output
}' Import the IronXL library to access its functionality
Imports Microsoft.VisualBasic
Imports IronXL
Shared Sub Main(ByVal args() As String)
' Access Excel file
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
' Access WorkSheet of Excel file
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
' Get a specific cell value, convert it to a string, and print it
Dim a As String = ws("A5").Value.ToString()
Console.WriteLine("Getting Single Value:" & vbLf & vbLf & " Value of Cell A5: {0}", a)
Console.WriteLine(vbLf & "Getting Many Cells Value using Loop:" & vbLf)
' Get multiple cell values using range function and iterate through them
For Each cell In ws("B2:B10")
Console.WriteLine(" Value is: {0}", cell.Text)
Next cell
Console.ReadKey() ' Pause the console to view output
End Subこのコードは以下の結果を生み出します:
Excelファイルが次のように表示されます:
私たちのExcelファイルsample.xlsxにA5セルにsmall businessが含まれているのを見ることができます。 B2からB10までの他の値は同じで、出力に表示されます。
DataSetとDataTables
これらの指示を使用して、Excelファイルをデータセットやデータテーブルとして操作することもできます。
// Access WorkBook and WorkSheet
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
// Convert workbook to DataSet
DataSet ds = wb.ToDataSet();
// Convert worksheet to DataTable
DataTable dt = ws.ToDataTable(true);// Access WorkBook and WorkSheet
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
// Convert workbook to DataSet
DataSet ds = wb.ToDataSet();
// Convert worksheet to DataTable
DataTable dt = ws.ToDataTable(true);' Access WorkBook and WorkSheet
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
' Convert workbook to DataSet
Dim ds As DataSet = wb.ToDataSet()
' Convert worksheet to DataTable
Dim dt As DataTable = ws.ToDataTable(True)Excel DataSetとDataTablesについてもっと読んで、プロセスについてのさらなるコード例と説明を提供します。
次に見るのは、新しいExcelファイルをC#プロジェクトで作成することに関する別の面です。
3. 新しいExcelファイルを作成
新しいExcelスプレッドシートを簡単に作成して、C#プロジェクトの中でプログラム的にデータを挿入できます。 これを達成するために、IronXLは新しいExcelファイルを作成するWorkBook.Create()関数を提供します。
必要に応じて、WorkBook.CreateWorkSheet()関数を使用して、より多くのWorkSheetを作成できます。
その後、次の例で示すようにデータを挿入することもできます:
// Import the IronXL library
using IronXL;
static void Main(string[] args)
{
// Create a new WorkBook
WorkBook wb = WorkBook.Create();
// Create a new WorkSheet in the workbook
WorkSheet ws = wb.CreateWorkSheet("sheet1");
// Insert data into cells
ws["A1"].Value = "New Value A1";
ws["B2"].Value = "New Value B2";
// Save the newly created Excel file
wb.SaveAs("NewExcelFile.xlsx");
}// Import the IronXL library
using IronXL;
static void Main(string[] args)
{
// Create a new WorkBook
WorkBook wb = WorkBook.Create();
// Create a new WorkSheet in the workbook
WorkSheet ws = wb.CreateWorkSheet("sheet1");
// Insert data into cells
ws["A1"].Value = "New Value A1";
ws["B2"].Value = "New Value B2";
// Save the newly created Excel file
wb.SaveAs("NewExcelFile.xlsx");
}' Import the IronXL library
Imports IronXL
Shared Sub Main(ByVal args() As String)
' Create a new WorkBook
Dim wb As WorkBook = WorkBook.Create()
' Create a new WorkSheet in the workbook
Dim ws As WorkSheet = wb.CreateWorkSheet("sheet1")
' Insert data into cells
ws("A1").Value = "New Value A1"
ws("B2").Value = "New Value B2"
' Save the newly created Excel file
wb.SaveAs("NewExcelFile.xlsx")
End Sub上記のコードは、NewExcelFile.xlsxという名前の新しいExcelファイルを作成し、セルアドレスA1とB2に、それぞれNew Value A1とNew Value B2という新しいデータを挿入します。 この設定により、必要なだけ同じ方法でデータを挿入できます。
注意: 新しいExcelファイルを作成するか、既存のものを変更する場合は、上記の例のようにファイルを保存するのを忘れないでください。
C#を使用して新しいExcelスプレッドシートを作成する方法をさらに掘り下げて、あなたのプロジェクトでコードを試してください。
4. 既存のExcelファイルを変更
既存のExcelファイルを変更し、プログラム的に更新データを挿入することができます。 Excelファイルの変更では、以下の側面を確認します:
- セルの値を更新
- 古い値を新しいものに置き換える
- 行または列を削除
上記のトピックをC#プロジェクトで実装する方法を見てみましょう。
セル値の更新
既存のExcelスプレッドシートのセル値を更新するのは非常に簡単です。 プロジェクトでExcelファイルにアクセスし、そのワークシートを指定して、次の例に示すようにデータを更新します:
// Import the IronXL library
using IronXL;
static void Main(string[] args)
{
// Access the WorkBook and WorkSheet
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
// Update A3 cell value
ws["A3"].Value = "New Value of A3";
// Save the updated Excel file
wb.SaveAs("sample.xlsx");
}// Import the IronXL library
using IronXL;
static void Main(string[] args)
{
// Access the WorkBook and WorkSheet
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
// Update A3 cell value
ws["A3"].Value = "New Value of A3";
// Save the updated Excel file
wb.SaveAs("sample.xlsx");
}' Import the IronXL library
Imports IronXL
Shared Sub Main(ByVal args() As String)
' Access the WorkBook and WorkSheet
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
' Update A3 cell value
ws("A3").Value = "New Value of A3"
' Save the updated Excel file
wb.SaveAs("sample.xlsx")
End Sub上記のコードは、A3セルの値をNew Value of A3に更新します。
範囲関数を使用して、静的な値で複数のセルを更新することもできます:
ws["A3:C3"].Value = "New Value";ws["A3:C3"].Value = "New Value";ws("A3:C3").Value = "New Value"これにより、ExcelファイルのA3からC3までの3行目の行がNew Valueで更新されます。
C#での範囲関数の使用について、これらの例からもっと学びましょう。
セル値の置換
IronXLの強みの一つは、既存のExcelファイルでold valuesをnew valuesに簡単に置き換える能力です。以下のすべての側面をカバーします:
- 完全なワークシートの値を置換:
ws.Replace("old value", "new value");ws.Replace("old value", "new value");ws.Replace("old value", "new value")- 特定の行の値を置換:
ws.Rows[RowIndex].Replace("old value", "new value");ws.Rows[RowIndex].Replace("old value", "new value");ws.Rows(RowIndex).Replace("old value", "new value")- 特定の列の値を置換:
ws.Columns[ColumnIndex].Replace("old value", "new Value");ws.Columns[ColumnIndex].Replace("old value", "new Value");ws.Columns(ColumnIndex).Replace("old value", "new Value")- 特定の範囲の値を置換:
ws["From:To"].Replace("old value", "new value");ws["From:To"].Replace("old value", "new value");ws("From:To").Replace("old value", "new value")C#プロジェクトでこれらの機能を使用して値を置換する方法を例で見てみましょう。 この例では、特定の範囲で値を置換するために置換機能を使用します。
// Import the IronXL library
using IronXL;
static void Main(string[] args)
{
// Access the WorkBook and WorkSheet
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
// Specify a range from B5 to G5 and replace "Normal" value with "Good"
ws["B5:G5"].Replace("Normal", "Good");
// Save the updated Excel file
wb.SaveAs("sample.xlsx");
}// Import the IronXL library
using IronXL;
static void Main(string[] args)
{
// Access the WorkBook and WorkSheet
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
// Specify a range from B5 to G5 and replace "Normal" value with "Good"
ws["B5:G5"].Replace("Normal", "Good");
// Save the updated Excel file
wb.SaveAs("sample.xlsx");
}' Import the IronXL library
Imports IronXL
Shared Sub Main(ByVal args() As String)
' Access the WorkBook and WorkSheet
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
' Specify a range from B5 to G5 and replace "Normal" value with "Good"
ws("B5:G5").Replace("Normal", "Good")
' Save the updated Excel file
wb.SaveAs("sample.xlsx")
End Sub上記のコードは、Normal値をGoodでB5からG5まで置換し、残りのワークシートはそのままです。 IronXLのこの機能を使用して、範囲内のExcelセル値を編集する方法についてさらに詳しく確認してください。
Excelファイルの行を削除
アプリケーション開発では、既存のExcelファイルの全行をプログラム的に削除する必要があることが時折あります。 このタスクには、IronXLのRemove()関数を使用します。 以下は例です:
// Import the IronXL library
using IronXL;
static void Main(string[] args)
{
// Access the WorkBook and WorkSheet
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
// Remove the row number 2
ws.Rows[2].Remove();
// Save the updated Excel file
wb.SaveAs("sample.xlsx");
}// Import the IronXL library
using IronXL;
static void Main(string[] args)
{
// Access the WorkBook and WorkSheet
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
// Remove the row number 2
ws.Rows[2].Remove();
// Save the updated Excel file
wb.SaveAs("sample.xlsx");
}' Import the IronXL library
Imports IronXL
Shared Sub Main(ByVal args() As String)
' Access the WorkBook and WorkSheet
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
' Remove the row number 2
ws.Rows(2).Remove()
' Save the updated Excel file
wb.SaveAs("sample.xlsx")
End Sub上記のコードはsample.xlsxの2行目を削除します。
チュートリアル クイックアクセス
よくある質問
Interopを使用せずにC#でExcelファイルをどのように読み取れますか?
Interopを必要とせずにC#でExcelファイルを読むためにはIronXLを使用できます。WorkBook.Load() 関数を使用してファイルを読み込み、WorkBook.GetWorkSheet() でワークシートにアクセスします。
C#でプログラム的に新しいExcelファイルを作成するプロセスは?
IronXLでは、WorkBook.Create() メソッドを使用して新しいExcelファイルを作成し、次にWorkSheet.CreateWorkSheet() を使用してデータを追加できます。
Interopを使用せずにC#でExcelファイルを変更することは可能ですか?
はい、IronXLはInteropを使用せずにセルの値を更新、古い値を置換、行や列を直接削除してExcelファイルを編集する機能を提供します。
IronXLを使用してExcelシートの特定のセルの値をどのように更新しますか?
セルの値を更新するには、WorkBook.GetWorkSheet() を使用してワークシートを読み込み、セルに新しい値を割り当て、その変更を保存します。
IronXLを使用してセル範囲内の値を置換することはできますか?
IronXLでは、ワークシートまたは特定の範囲オブジェクト上でReplace() 関数を使用して範囲内の値を置換することができます。
Microsoft.Office.Interop.ExcelよりもIronXLを使用する利点は何ですか?
IronXLは、使いやすいAPIを提供し、複雑なInteropコードの必要性を低減し、より良いパフォーマンスと信頼性を提供することでExcelファイル操作を簡素化します。
IronXLを使用してExcelファイルから行を削除するにはどうすればよいですか?
IronXLでは、指定された行オブジェクトに対してRemove() 関数を使用して行を削除できます。
IronXLはExcelファイルをDataSetおよびDataTableに変換することをサポートしていますか?
はい、IronXLはワークブックをDataSetに、ワークシートをDataTableに変換することをサポートしており、より柔軟なデータ操作が可能です。
C#プロジェクトにIronXLをどのようにインストールしますか?
IronXLは、Iron Softwareのウェブサイトからダウンロードするか、NuGetパッケージマネージャーを使用して以下のコマンドでインストールできます:Install-Package IronXL.Excel。
IronXLは大規模なExcelファイルに適していますか?
IronXLは大きなExcelファイルを効率的に処理するように最適化されており、従来のInteropメソッドと比較して、高速な処理速度と最小限のメモリ使用量を提供します。








