C#でExcelインタロップを代替する方法

C# Excel Interop Workaround

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

多くのプロジェクトでは、Excelを使用して明確にコミュニケーションを取りますが、Microsoft.Office.Interop.Excelを使用している場合、複雑なコード行に直面することが多いでしょう。 このチュートリアルでは、C# Excel Interopの代わりにIronXLを使用して、Interopを使わずにプロジェクトを完成させる方法を紹介します。 Excelファイルデータを使用したり、Excelファイルを作成、編集、操作することがすべてC#プログラミングで可能です。

class="learnn-how-section">
class="row">
class="col-sm-6">

C# Excel No Interop

  • Excel No Interopライブラリをダウンロード
  • C#でExcelファイルにアクセス
  • プログラム的に新しいExcelファイルを作成し、データを挿入
  • 既存のファイルを変更して、セルの値を更新・置換、行を削除など
class="col-sm-6">
class="download-card"> How To Work related to C# Excel Interop Workaround

Excel Interopを別の方法で利用する方法

  1. ExcelライブラリをインストールしてExcelファイルを処理します。
  2. Workbookを開いて現在のExcelファイルを追加します。
  3. デフォルトのワークシートを設定します。
  4. Excelワークブックから値を読み取ります。
  5. 処理して値を表示します。

class="tutorial-segment-title">ステップ 1

1. IronXL ライブラリをダウンロード

Download IronXL Library or NuGetでインストールして無料ライブラリにアクセスし、Interopを使わずにこのチュートリアルをステップバイステップで進めてください。プロジェクトを始動させたい場合、ライセンスも利用可能です。

Install-Package IronXL.Excel

class="tutorial-segment-title">チュートリアル方法

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
$vbLabelText   $csharpLabel

このコードは以下の結果を生み出します:

class="center-image-wrapper"> 1output related to 2. Excelファイルデータにアクセス

Excelファイルが次のように表示されます:

class="center-image-wrapper"> 1excel related to 2. Excelファイルデータにアクセス

私たちのExcelファイルsample.xlsxA5セルに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)
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

上記のコードは、NewExcelFile.xlsxという名前の新しいExcelファイルを作成し、セルアドレスA1B2に、それぞれNew Value A1New 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
$vbLabelText   $csharpLabel

上記のコードは、A3セルの値をNew Value of A3に更新します。

範囲関数を使用して、静的な値で複数のセルを更新することもできます:

ws["A3:C3"].Value = "New Value";
ws["A3:C3"].Value = "New Value";
ws("A3:C3").Value = "New Value"
$vbLabelText   $csharpLabel

これにより、ExcelファイルのA3からC3までの3行目の行がNew Valueで更新されます。

C#での範囲関数の使用について、これらの例からもっと学びましょう。

セル値の置換

IronXLの強みの一つは、既存のExcelファイルでold valuesnew valuesに簡単に置き換える能力です。以下のすべての側面をカバーします:

  • 完全なワークシートの値を置換:
ws.Replace("old value", "new value");
ws.Replace("old value", "new value");
ws.Replace("old value", "new value")
$vbLabelText   $csharpLabel
  • 特定の行の値を置換:
ws.Rows[RowIndex].Replace("old value", "new value");
ws.Rows[RowIndex].Replace("old value", "new value");
ws.Rows(RowIndex).Replace("old value", "new value")
$vbLabelText   $csharpLabel
  • 特定の列の値を置換:
ws.Columns[ColumnIndex].Replace("old value", "new Value");
ws.Columns[ColumnIndex].Replace("old value", "new Value");
ws.Columns(ColumnIndex).Replace("old value", "new Value")
$vbLabelText   $csharpLabel
  • 特定の範囲の値を置換:
ws["From:To"].Replace("old value", "new value");
ws["From:To"].Replace("old value", "new value");
ws("From:To").Replace("old value", "new value")
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

上記のコードは、Normal値をGoodB5から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
$vbLabelText   $csharpLabel

上記のコードはsample.xlsx2行目を削除します。


class="tutorial-segment-title">チュートリアルクイックアクセス

class="tutorial-section">
class="row">
class="col-sm-8">

IronXLリファレンス

IronXLのAPIリファレンスを読んで、すべての機能、機能、クラス、および名前空間についてもっと学びましょう。

IronXLリファレンス
class="col-sm-4">
class="tutorial-image"> Documentation related to class=チュートリアルクイックアクセス" class="img-responsive add-shadow img-responsive img-popup" src="/img/svgs/documentation.svg" loading="lazy">

よくある質問

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メソッドと比較して、高速な処理速度と最小限のメモリ使用量を提供します。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はいいですか?
Nuget ダウンロード 1,686,155 | バージョン: 2025.11 ただ今リリースされました