C# Excel Interop 替代方案
許多專案使用 Excel 來清晰地進行溝通,但如果您使用 Microsoft.Office.Interop.Excel
,那麼您可能面臨過許多複雜的代碼行。在本教程中,我們將使用 IronXL 作為 C# Excel Interop 的替代方案,這樣您就不必使用 Interop 來完成您的專案。您可以使用 C# 程式語言來使用 Excel 文件數據、創建 Excel 文件、進行編輯和操作。
如何替代使用 Excel Interop
安裝處理 Excel 檔案的 Excel 庫。
打開
Workbook
並加入目前的 Excel 檔案。設定預設工作表。
從 Excel 工作簿中讀取值。
- 處理並顯示該值。
第一步
1. 下載 IronXL 庫
下載IronXL庫 或 使用 NuGet 安裝 訪問免費庫,然後逐步按照本教程使用 Excel 而不需 Interop。如果您希望將專案上線,可以購買許可證。
Install-Package IronXL.Excel
如何操作教程
2. 存取 Excel 文件資料
要開發商務應用程式,我們需要簡單且完善地存取來自 Excel 檔案的資料,並能夠根據各種需求以程式方式操作它們。使用 IronXL,可以使用 `WorkBook.Load()``` function, 這個函數允許讀取特定的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
的其他值是相同的,並顯示在輸出中。
DataSet 和 DataTables
我們也可以按照這些指示,將 Excel 文件作為 dataset 和 datatables 使用。
/**
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資料集和資料表,這提供了更多代碼示例和過程說明。
現在,我們將看到另一個方面,這是關於在我們的 C# 項目中創建新的 Excel 文件。
3. 新建 Excel 文件
我們可以輕鬆地在 CSharp 項目中以程式方式創建新的 Excel 試算表並在其中插入數據。為了達成這一點,IronXL 提供了 WorkBook.Create
。()function
,該函數創建一個新的 Excel 文件。
我們可以使用 WorkBook.CreateWorkSheet
創建所需數量的工作表。()` function.
之後,我們還可以插入數據,如下例所示:
/**
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 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 文件的整行。對於這項任務,我們使用 RemoveRow()
IronXL 的功能。以下是一個範例:
/**
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
行。