C#でExcelファイルを編集

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

開発者はC#でExcelファイルを修正および編集する際には慎重でなければなりません。なぜなら、ひとつのミスで全体のドキュメントが変わってしまうことがあるからです。 シンプルで効率的なコードに依存できることは、エラーのリスクを減らし、Excelファイルをプログラムで編集または削除しやすくします。 本日は、テスト済みの機能を使用して、正しくかつ迅速にC#でExcelファイルを編集するための手順を説明します。


ステップ 1

1. IronXLライブラリを使用してC#でExcelファイルを編集する

このチュートリアルでは、C#のExcelライブラリであるIronXLによって定義された関数を使用します。 これらの機能を使用するには、まずダウンロードしてプロジェクトにインストールする必要があります。 (開発用に無料).

次のいずれかを選択できます。 IronXL.zipをダウンロード または、以下を通じてさらに詳しく読むとインストールを行います NuGetパッケージページ.

インストールが完了したら、始めましょう!

Install-Package IronXL.Excel

チュートリアルの方法

特定のセルの値を編集

まず、Excelスプレッドシートの特定のセルの値を編集する方法を見ていきます。

この目的のために、変更するExcelスプレッドシートをインポートし、そのワークシートにアクセスします。 以下のように変更を適用することができます。

/**
Import and Edit SpreadSheet
anchor-edit-specific-cell-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");//import Excel SpreadSheet
    WorkSheet ws = wb.GetWorkSheet("Sheet1");//access specific workshet
    ws.Rows [3].Columns [1].Value = "New Value";//access specific cell and modify its value
    wb.SaveAs("sample.xlsx");//save changes
}
/**
Import and Edit SpreadSheet
anchor-edit-specific-cell-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");//import Excel SpreadSheet
    WorkSheet ws = wb.GetWorkSheet("Sheet1");//access specific workshet
    ws.Rows [3].Columns [1].Value = "New Value";//access specific cell and modify its value
    wb.SaveAs("sample.xlsx");//save changes
}
'''
'''Import and Edit SpreadSheet
'''anchor-edit-specific-cell-values
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx") 'import Excel SpreadSheet
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1") 'access specific workshet
	ws.Rows (3).Columns (1).Value = "New Value" 'access specific cell and modify its value
	wb.SaveAs("sample.xlsx") 'save changes
End Sub
VB   C#

Here are before and after screenshots of Excel SpreadSheet sample.xlsx:

Before After

:---: :-----:

before after

We can see how simple it is to modify the Excel SpreadSheet value.

If needed, there is also an alternative way to edit the specific cell value by cell address:

 ws ["B4"].Value = "New Value"; //alternative way to access specific cell and apply changes
 ws ["B4"].Value = "New Value"; //alternative way to access specific cell and apply changes
ws ("B4").Value = "New Value" 'alternative way to access specific cell and apply changes
VB   C#

行全体の値を編集

Excelスプレッドシートの全行の値を静的な値で編集するのは非常に簡単です。

/**
Edit Full Row Values
anchor-edit-full-row-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    ws.Rows [3].Value = "New Value";        
    wb.SaveAs("sample.xlsx");
}
/**
Edit Full Row Values
anchor-edit-full-row-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    ws.Rows [3].Value = "New Value";        
    wb.SaveAs("sample.xlsx");
}
'''
'''Edit Full Row Values
'''anchor-edit-full-row-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")
	ws.Rows (3).Value = "New Value"
	wb.SaveAs("sample.xlsx")
End Sub
VB   C#

以下の「sample.xlsx」のスクリーンショットをご覧ください:

前 以下を日本語に翻訳してください:

After

:---: すみませんが、テキストが提供されていないため翻訳することができません。翻訳したい内容を入力していただけますか?

前 後

これに対して、範囲関数を使用することで、特定の行の範囲の値を編集することもできます。

ws ["A3:E3"].Value = "New Value";
ws ["A3:E3"].Value = "New Value";
ws ("A3:E3").Value = "New Value"
VB   C#

4. 列全体の値を編集

上記と同様に、Excelスプレッドシートの列全体の値を単一の値で簡単に編集できます。

/**
Edit Full Column Values
anchor-edit-full-column-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    ws.Columns [1].Value = "New Value";
    wb.SaveAs("sample.xlsx");
}
/**
Edit Full Column Values
anchor-edit-full-column-values
**/
using IronXL;
static void Main(string [] args)
{
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    ws.Columns [1].Value = "New Value";
    wb.SaveAs("sample.xlsx");
}
'''
'''Edit Full Column Values
'''anchor-edit-full-column-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")
	ws.Columns (1).Value = "New Value"
	wb.SaveAs("sample.xlsx")
End Sub
VB   C#

次のような sample.xlsx スプレッドシートが生成されます:

前 以下を日本語に翻訳してください:

After

:---: すみませんが、テキストが提供されていないため翻訳することができません。翻訳したい内容を入力していただけますか?

前 後


動的な値を使用してフル行を編集

IronXLを使用すると、動的な値で特定の行を編集することも可能です。 これは、各セルに動的な値を割り当てることで、行全体を編集できることを意味します。 例を見てみましょう:

/**
Edit Row Dynamic Values
anchor-edit-full-row-with-dynamic-values
**/
using IronXL;
static void Main(string [] args)
{

    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    for (int i = 0; i < ws.Columns.Count(); i++)
    {
        ws.Rows [3].Columns [i].Value = "New Value "+i.ToString();
    }        
    wb.SaveAs("sample.xlsx");
}
/**
Edit Row Dynamic Values
anchor-edit-full-row-with-dynamic-values
**/
using IronXL;
static void Main(string [] args)
{

    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    for (int i = 0; i < ws.Columns.Count(); i++)
    {
        ws.Rows [3].Columns [i].Value = "New Value "+i.ToString();
    }        
    wb.SaveAs("sample.xlsx");
}
'''
'''Edit Row Dynamic Values
'''anchor-edit-full-row-with-dynamic-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")
	For i As Integer = 0 To ws.Columns.Count() - 1
		ws.Rows (3).Columns (i).Value = "New Value " & i.ToString()
	Next i
	wb.SaveAs("sample.xlsx")
End Sub
VB   C#

下の表には、この出力からのExcelスプレッドシート sample.xlsx のスクリーンショットが表示されています:

前 以下を日本語に翻訳してください:

After

:---: すみませんが、テキストが提供されていないため翻訳することができません。翻訳したい内容を入力していただけますか?

前 後


6. 動的な値で全列を編集

特定の列を動的な値で編集することも簡単です。

/**
Edit Column Dynamic Values
anchor-edit-full-column-with-dynamic-values
**/
using IronXL;
static void Main(string [] args)
{

    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    for (int i = 0; i < ws.Rows.Count(); i++)
    {
        if (i == 0)//it is for if our first column is used as a header
            continue;
        ws.Rows [i].Columns [1].Value = "New Value " + i.ToString();
    }
    wb.SaveAs("sample.xlsx");
}
/**
Edit Column Dynamic Values
anchor-edit-full-column-with-dynamic-values
**/
using IronXL;
static void Main(string [] args)
{

    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    for (int i = 0; i < ws.Rows.Count(); i++)
    {
        if (i == 0)//it is for if our first column is used as a header
            continue;
        ws.Rows [i].Columns [1].Value = "New Value " + i.ToString();
    }
    wb.SaveAs("sample.xlsx");
}
'''
'''Edit Column Dynamic Values
'''anchor-edit-full-column-with-dynamic-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")
	For i As Integer = 0 To ws.Rows.Count() - 1
		If i = 0 Then 'it is for if our first column is used as a header
			Continue For
		End If
		ws.Rows (i).Columns (1).Value = "New Value " & i.ToString()
	Next i
	wb.SaveAs("sample.xlsx")
End Sub
VB   C#

以下の sample.xlsx の表結果に基づいて:

前 以下を日本語に翻訳してください:

After

:---: すみませんが、テキストが提供されていないため翻訳することができません。翻訳したい内容を入力していただけますか?

前 後


7. スプレッドシートの値の置き換え

Excelスプレッドシート内の任意の値を更新された値に置き換えたい場合、Replaceという関数を使用できます。 この機能を使用すると、任意の状況に応じてExcelスプレッドシートのデータを置き換えることができます。

7.1. 特定の値を完全なワークシートで置き換える

特定の値を最新の値に置き換えるためには、単にExcelのワークシート ws にアクセスします。 (上記の例と同じように) このように Replace 関数を適用します。

/**
Replace Cell Values
anchor-replace-specific-value-of-complete-worksheet
**/
ws.Replace("old value", "new value");
/**
Replace Cell Values
anchor-replace-specific-value-of-complete-worksheet
**/
ws.Replace("old value", "new value");
'''
'''Replace Cell Values
'''anchor-replace-specific-value-of-complete-worksheet
'''*
ws.Replace("old value", "new value")
VB   C#

この関数は、完全なExcelワークシート内の old valuenew value に置き換えます。

上記の例に示されているように、変更後はファイルを保存することを忘れないでください。

7.2. 特定の行の値を置き換える

特定の行だけを変更し、ワークシートの残り全体を変更しない場合は、次のコードを使用します。

ws.Rows [2].Replace("old value", "new value");
ws.Rows [2].Replace("old value", "new value");
ws.Rows (2).Replace("old value", "new value")
VB   C#

上記のコードは、行番号「2」でのみ「old value」を「new value」に置き換えます。 残りのWorkSheetは同じままです。

7.3. 行範囲の値を置換する

次のように、特定の範囲内の値を置き換えることもできます:

ws ["From Cell Address : To Cell Address"].Replace("old value", "new value");
ws ["From Cell Address : To Cell Address"].Replace("old value", "new value");
ws ("From Cell Address : To Cell Address").Replace("old value", "new value")
VB   C#

次のように書きます:古い値を新しい値に置き換えたい場合、行番号4B4からE4の範囲内でのみ。

ws ["B4:E4"].Replace("old value", "new value");
ws ["B4:E4"].Replace("old value", "new value");
ws ("B4:E4").Replace("old value", "new value")
VB   C#

7.4. 特定の列の値を置き換える

特定の列の値を置き換えることもでき、そのほかのワークシートは同じままです。

ws.Columns [1].Replace("old value", "new Value")
ws.Columns [1].Replace("old value", "new Value")
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'ws.Columns [1].Replace("old value", "new Value")
VB   C#

上記のコードは、列番号「1」について「old value」を「new value」に置き換えます。

カラム範囲の値を置き換える

次の方法で、特定の列の範囲内で置換するために range 関数を使用することもできます。

 ws ["B5:B10"].Replace("old value", "new value");
 ws ["B5:B10"].Replace("old value", "new value");
ws ("B5:B10").Replace("old value", "new value")
VB   C#

上記のコードは、列 B の範囲 B5 から B10 の間で old valuenew value に置き換えます。


  1. Excelワークシートから行を削除

IronXLは、Excelワークシートの特定の行を削除するための非常に簡単な機能を提供します。 例を見てみましょう。

/**
Remove Row
anchor-remove-row-from-excel-worksheet
**/
using IronXL;
static void Main(string [] args)
{ 
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    ws.Rows [3].RemoveRow();
    wb.SaveAs("sample.xlsx");
}
/**
Remove Row
anchor-remove-row-from-excel-worksheet
**/
using IronXL;
static void Main(string [] args)
{ 
    WorkBook wb = WorkBook.Load("sample.xlsx");
    WorkSheet ws = wb.GetWorkSheet("Sheet1");
    ws.Rows [3].RemoveRow();
    wb.SaveAs("sample.xlsx");
}
'''
'''Remove Row
'''anchor-remove-row-from-excel-worksheet
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
	Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
	Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
	ws.Rows (3).RemoveRow()
	wb.SaveAs("sample.xlsx")
End Sub
VB   C#

上記のコードは、以下の表に示すように sample.xlsx の3行目を削除します:

前 以下を日本語に翻訳してください:

After

:---: すみませんが、テキストが提供されていないため翻訳することができません。翻訳したい内容を入力していただけますか?

前 後


Excelファイルからワークシートを削除

Excelファイルの完全なワークシートを削除したい場合は、以下の方法を使用できます。

/**
Remove Worksheet from File
anchor-remove-worksheet-from-excel-file
**/
wb.RemoveWorkSheet(1); // by sheet indexing
/**
Remove Worksheet from File
anchor-remove-worksheet-from-excel-file
**/
wb.RemoveWorkSheet(1); // by sheet indexing
'''
'''Remove Worksheet from File
'''anchor-remove-worksheet-from-excel-file
'''*
wb.RemoveWorkSheet(1) ' by sheet indexing
VB   C#

wbは、上記の例と同じようにワークブックです。 名前でワークシートを削除したい場合は、次のようにします:

wb.RemoveWorkSheet("Sheet1"); //by sheet name
wb.RemoveWorkSheet("Sheet1"); //by sheet name
wb.RemoveWorkSheet("Sheet1") 'by sheet name
VB   C#

IronXLには、Excelスプレッドシートであらゆる種類の編集や削除を簡単に実行できる多くの機能が豊富に揃っています。 プロジェクトでの使用に関して質問がある場合は、ぜひ弊社の開発チームにお問い合わせください。


ライブラリ クイック アクセス

IronXLライブラリドキュメント

IronXL C#ライブラリの全機能を探求し、Excelワークブックの編集、削除、スタイリング、および完璧化のためのさまざまな機能を活用してください。

IronXLライブラリドキュメント