C# Excel Interop Workaround
許多專案會使用 Excel 來清晰地傳達資訊,但若您正在使用 Microsoft.Office.Interop.Excel,那麼您很可能已經面對過許多複雜的程式碼行。 在本教學中,我們將使用 IronXL 作為 C# Excel Interop 的替代方案,因此您無需使用 Interop 即可完成專案。 您可以使用 C# 程式語言來讀取 Excel 檔案資料、建立 Excel 檔案,以及進行編輯與處理。
C# Excel 無互操作性
- 下載 Excel No Interop 函式庫
- 在 C# 中存取 Excel 檔案
- 建立新的 Excel 檔案並透過程式碼插入資料
- 修改現有檔案、更新與替換儲存格值、刪除列等
如何使用 Excel Interop 的替代方案
- 安裝 Excel 函式庫以處理 Excel 檔案。
- 開啟
Workbook並加入當前的 Excel 檔案。 - 設定預設工作表。
- 從 Excel 工作簿中讀取數值。
- 闡述並展現其價值。
步驟 1
1. 下載 IronXL程式庫
下載 IronXL程式庫或透過 NuGet 安裝,即可取得此免費程式庫,接著按照逐步說明,完成這篇關於"無需 Interop 即可使用 Excel"的教學。若您希望將專案正式上線,亦可選購授權。
Install-Package IronXL.Excel
操作教學
2. 存取 Excel 檔案資料
為了開發企業應用程式,我們需要能夠輕鬆且完美地存取 Excel 檔案中的資料,並能根據各種需求透過程式化方式進行處理。 使用 IronXL 時,請運用 WorkBook.Load() 函式,該函式可讓您讀取特定的 Excel 檔案。
開啟工作簿後,您可以使用 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 檔案作為資料集,並處理 DataTables。
// 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 的說明,其中提供了更多程式碼範例及相關流程的解說。
接下來,我們將探討另一個面向,即在 C# 專案中建立新的 Excel 檔案。
3. 建立新的 Excel 檔案
我們可以在 C# 專案中輕鬆建立新的 Excel 試算表,並透過程式碼將資料插入其中。 為此,IronXL 提供了 WorkBook.Create() 函式,該函式可建立新的 Excel 檔案。
接著,我們可以使用 WorkBook.CreateWorkSheet() 函式建立所需數量的工作表。
之後,我們也可以插入資料,如下例所示:
// 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。
我們也可以使用 range 函數,將靜態值套用至多個儲存格:
ws["A3:C3"].Value = "New Value";
ws["A3:C3"].Value = "New Value";
ws("A3:C3").Value = "New Value"
這將把 Excel 檔案中第 3 行 A3 至 C3 儲存格的內容更新為 New Value。
替換儲存格值
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.Co/lumns[ColumnIndex].Replace("old value", "new Value");
ws.Co/lumns[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# 專案中使用上述函式來替換數值。 在此範例中,我們將使用 replace 函式來替換特定範圍內的值。
// 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
上述程式碼將移除 2 的第 sample.xlsx 行。
教學快速連結
常見問題
如何在不使用 Interop 的情況下,於 C# 中讀取 Excel 檔案?
您可以使用 IronXL 在 C# 中讀取 Excel 檔案,無需使用 Interop。透過 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,簡化 Excel 檔案的操作流程,減少對複雜互操作 (Interop) 程式碼的需求,並提供更佳的效能與可靠性。
如何使用 IronXL.Excel 從 Excel 檔案中刪除一行?
要在 IronXL 中刪除一行,請在工作表中對指定的行物件使用 Remove() 函式。
IronXL 是否支援將 Excel 檔案轉換為 DataSets 和 DataTables?
是的,IronXL 支援將工作簿轉換為 DataSets,以及將工作表轉換為 DataTables,從而實現更靈活的資料處理。
如何在 C# 專案中安裝 IronXL?
您可透過從 Iron Software 網站下載,或使用 NuGet 套件管理員執行以下指令,將 IronXL.Excel 安裝至您的 C# 專案中:Install-Package IronXL.Excel。
IronXL 適合處理大型 Excel 檔案嗎?
IronXL 經過優化,能高效處理大型 Excel 檔案,相較於傳統的 Interop 方法,不僅處理速度更快,記憶體佔用量也更低。



