C#Excel インターオペ ワークアラウンド
多くのプロジェクトはExcelを使用して明確にコミュニケーションしていますが、Microsoft.Office.Interop.Excel
を使用している場合、複雑なコードの行に直面することが多いでしょう。 このチュートリアルでは、IronXLをC#のExcel Interopの代替手段として使用し、Interopを使用しなくてもプロジェクトを完了できるようにします。 Excel ファイルのデータを使用し、Excel ファイルを作成し、編集して操作することが、C# プログラミングを使用して可能です。
Excel Interopの代替使用方法
-
Excelファイルを処理するためのExcelライブラリをインストールします。
-
Workbook
を開いて現在のExcelファイルを追加します。 -
デフォルトのワークシートを設定します。
-
Excelワークブックから値を読み取る。
- プロセスし、価値を表示する。
ステップ 1
1. IronXLライブラリをダウンロード
NuGetでインストール して無料ライブラリにアクセスし、Interopを使用せずにExcelを使用するこのチュートリアルをステップバイステップで進めてください。プロジェクトで公開したい場合はライセンスがあります。
Install-Package IronXL.Excel
チュートリアルの方法
2. Excelファイルデータへのアクセス
ビジネスアプリケーションを開発するためには、Excelファイルからのデータに簡単かつ完璧にアクセスでき、さまざまな要件に従ってプログラムで操作できる能力が必要です。 IronXL を使用して、WorkBook.Load()
関数を使うことで、特定の Excel ファイルを読み込むことができます。
WorkBookにアクセスした後、WorkBook.GetWorkSheet()
関数を使用して特定のWorkSheetを選択できます。 これで、すべてのExcelファイルデータが利用可能になりました。 以下の例をご覧ください。これらの関数を使用してC#プロジェクトでExcelファイルのデータを取得する方法を示しています。
/**
Access File Data
anchor-access-excel-file-data
**/
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 specific cell value
string a = ws ["A5"].Value.ToString();
Console.WriteLine(" Getting Single Value:\n\n Value of Cell A5: {0} ",a);
Console.WriteLine("\n Getting Many Cells Value using Loop:\n");
//get many cell values using range function
foreach (var cell in ws ["B2:B10"])
{
Console.WriteLine(" Value is: {0}", cell.Text);
}
Console.ReadKey();
}
/**
Access File Data
anchor-access-excel-file-data
**/
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 specific cell value
string a = ws ["A5"].Value.ToString();
Console.WriteLine(" Getting Single Value:\n\n Value of Cell A5: {0} ",a);
Console.WriteLine("\n Getting Many Cells Value using Loop:\n");
//get many cell values using range function
foreach (var cell in ws ["B2:B10"])
{
Console.WriteLine(" Value is: {0}", cell.Text);
}
Console.ReadKey();
}
'''
'''Access File Data
'''anchor-access-excel-file-data
'''*
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 specific cell value
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 many cell values using range function
For Each cell In ws ("B2:B10")
Console.WriteLine(" Value is: {0}", cell.Text)
Next cell
Console.ReadKey()
End Sub
このコードは次の結果を生成します。
以下のようなExcelファイルである場合:
私たちのExcelファイルsample.xlsx
のA5
セルにsmall business
が含まれていることがわかります。 B2
からB10
までの他の値は同じで、出力に表示されます。
データセットとデータテーブル
私たちは、Excelファイルをデータセットやデータテーブルとして使用することもできます。以下の手順を参照してください。
/**
DataSet and DataTables
anchor-dataset-and-datatables
**/
//Access WorkBook.
WorkBook wb = WorkBook.Load("sample.xlsx");
//Access WorkSheet.
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Behave with a workbook as Dataset.
DataSet ds = wb.ToDataSet();
//Behave with workbook as DataTable
DataTable dt = ws.ToDataTable(true);
/**
DataSet and DataTables
anchor-dataset-and-datatables
**/
//Access WorkBook.
WorkBook wb = WorkBook.Load("sample.xlsx");
//Access WorkSheet.
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Behave with a workbook as Dataset.
DataSet ds = wb.ToDataSet();
//Behave with workbook as DataTable
DataTable dt = ws.ToDataTable(true);
'''
'''DataSet and DataTables
'''anchor-dataset-and-datatables
'''*
'Access WorkBook.
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
'Access WorkSheet.
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'Behave with a workbook as Dataset.
Dim ds As DataSet = wb.ToDataSet()
'Behave with workbook as DataTable
Dim dt As DataTable = ws.ToDataTable(True)
Excel DataSetとDataTablesの操作方法については、さらに多くのコード例とプロセスの説明を提供しています。
では、次に、C#プロジェクトで新しいExcelファイルを作成する方法について見ていきます。
新しいExcelファイルを作成する
私たちは、CSharpプロジェクトでプログラムによって新しいExcelスプレッドシートを簡単に作成し、データを挿入できます。 これを達成するために、IronXLは新しいExcelファイルを作成するWorkBook.Create()
関数を提供します。
その後、WorkBook.CreateWorkSheet()
関数を使用して、必要に応じて多数のワークシートを作成することができます。
その後、以下の例に示すようにデータを挿入することもできます:
/**
Create New Excel
anchor-create-new-excel-file
**/
using IronXL;
static void Main(string [] args)
{
//create new WorkBook
WorkBook wb = WorkBook.Create();
//Create new WorkSheet in wb
WorkSheet ws = wb.CreateWorkSheet("sheet1");
//Insert Data
ws ["A1"].Value = "New Value A1";
ws ["B2"].Value = "New Value B2";
//Save newly created Excel file
wb.SaveAs("NewExcelFile.xlsx");
}
/**
Create New Excel
anchor-create-new-excel-file
**/
using IronXL;
static void Main(string [] args)
{
//create new WorkBook
WorkBook wb = WorkBook.Create();
//Create new WorkSheet in wb
WorkSheet ws = wb.CreateWorkSheet("sheet1");
//Insert Data
ws ["A1"].Value = "New Value A1";
ws ["B2"].Value = "New Value B2";
//Save newly created Excel file
wb.SaveAs("NewExcelFile.xlsx");
}
'''
'''Create New Excel
'''anchor-create-new-excel-file
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
'create new WorkBook
Dim wb As WorkBook = WorkBook.Create()
'Create new WorkSheet in wb
Dim ws As WorkSheet = wb.CreateWorkSheet("sheet1")
'Insert Data
ws ("A1").Value = "New Value A1"
ws ("B2").Value = "New Value B2"
'Save newly created Excel file
wb.SaveAs("NewExcelFile.xlsx")
End Sub
上記のコードは、NewExcelFile.xlsx
という名前の新しいExcelファイルを作成し、セルアドレスA1
とB1
にそれぞれ値New Value A1
とNew Value B2
を挿入します。 この設定を行うことで、必要なだけデータを同じ方法で挿入することができます。
注意: 新しいExcelファイルを作成する場合や既存のファイルを修正する場合は、上記の例に示されているようにファイルを保存することを忘れないでください。
C#を使用して新しいExcelスプレッドシートを作成する方法について詳しく調べ、プロジェクトでコードを試してみてください。
4. 既存のExcelファイルを修正する
既存のExcelファイルを変更し、プログラムを使って更新されたデータを挿入することができます。 Excelファイルの変更において、以下の側面を見ていきます:
- セル値を更新する
- 古い値を新しいものに置き換える
-
行または列を削除
上記のトピックをCSharpプロジェクトに実装する方法を見てみましょう。
セル値を更新
既存のExcelスプレッドシートのセル値を更新するのは非常に簡単です。 プロジェクト内のExcelファイルにアクセスし、その作業シートを指定して、以下の例のようにデータを更新してください。
/**
Update Cell Value
anchor-update-cell-value
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//update A3 value
ws ["A3"].Value = "New Value of A3";
wb.SaveAs("sample.xlsx");
}
/**
Update Cell Value
anchor-update-cell-value
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//update A3 value
ws ["A3"].Value = "New Value of A3";
wb.SaveAs("sample.xlsx");
}
'''
'''Update Cell Value
'''anchor-update-cell-value
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'update A3 value
ws ("A3").Value = "New Value of A3"
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ファイルの行番号3をA3
セルからC3
セルにNew Value
で更新します。
これらの例でC#のRange関数の使用方法について詳しく学びましょう。
セル値の置換
IronXLの美しさは、既存のExcelファイル内で古い値
を新しい値
に簡単に置き換えられることであり、次のすべての側面をカバーしています:
- ワークシート全体の値を置換する:
WorkSheet.Replace("old value", "new value");
WorkSheet.Replace("old value", "new value");
WorkSheet.Replace("old value", "new value")
- 特定の行の値を置き換える:
WorkSheet.Rows [RowIndex].Replace("old value", "new value");
WorkSheet.Rows [RowIndex].Replace("old value", "new value");
WorkSheet.Rows (RowIndex).Replace("old value", "new value")
- 特定の列の値を置き換える:
WorkSheet.Columns [ColumnIndex].Replace("old value", "new Value")
WorkSheet.Columns [ColumnIndex].Replace("old value", "new Value")
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'WorkSheet.Columns [ColumnIndex].Replace("old value", "new Value")
- 特定の範囲内の値を置き換える:
WorkSheet ["From:To"].Replace("old value", "new value");
WorkSheet ["From:To"].Replace("old value", "new value");
WorkSheet ("From:To").Replace("old value", "new value")
ここで、上記の機能を使用して値を置き換える方法を、CSharpプロジェクトの例で具体的に見てみましょう。 これには、特定の範囲で値を置き換えるためにreplace関数を使用します。
/**
Replace Cell Value Range
anchor-replace-cell-values
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Specifying Range from B5 to G5
ws ["B5:G5"].Replace("Normal", "Good");
wb.SaveAs("sample.xlsx");
}
/**
Replace Cell Value Range
anchor-replace-cell-values
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Specifying Range from B5 to G5
ws ["B5:G5"].Replace("Normal", "Good");
wb.SaveAs("sample.xlsx");
}
'''
'''Replace Cell Value Range
'''anchor-replace-cell-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")
'Specifying Range from B5 to G5
ws ("B5:G5").Replace("Normal", "Good")
wb.SaveAs("sample.xlsx")
End Sub
上記のコードは、B5
からG5
までのNormal
の値をGood
に置き換え、残りのワークシートはそのままです。 範囲内のExcelセル値を編集する方法とIronXLのこの機能の使用についてもっと見る。
Excelファイルの行を削除
アプリケーション開発において、既存のExcelファイルの行全体をプログラムで削除する必要がある場合があります。 このタスクでは、IronXLのRemoveRow()
関数を使用します。 Here's an example: 例があります。
/**
Remove Row
anchor-remove-rows-of-excel-file
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Remove the row number 2
ws.Rows [2].RemoveRow();
wb.SaveAs("sample.xlsx");
}
/**
Remove Row
anchor-remove-rows-of-excel-file
**/
using IronXL;
static void Main(string [] args)
{
WorkBook wb = WorkBook.Load("sample.xlsx");
WorkSheet ws = wb.GetWorkSheet("Sheet1");
//Remove the row number 2
ws.Rows [2].RemoveRow();
wb.SaveAs("sample.xlsx");
}
'''
'''Remove Row
'''anchor-remove-rows-of-excel-file
'''*
Imports IronXL
Shared Sub Main(ByVal args() As String)
Dim wb As WorkBook = WorkBook.Load("sample.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
'Remove the row number 2
ws.Rows (2).RemoveRow()
wb.SaveAs("sample.xlsx")
End Sub
上記のコードは、sample.xlsx
の行番号2
を削除します。