C# Excel 互通解決方案
許多專案使用 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
方法載入Excel文件。()函數,用於授權訪問讀取特定的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
單元格內存有小企業
。 從 B2
到 B10
的其他值是相同的,並顯示在輸出中。
DataSet 和 DataTables
我們還可以使用這些方法處理 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資料集和資料表,提供更多的代碼示例和過程解釋。
現在,我們將看到另一個方面,這是關於在我們的C#項目中創建新的Excel文件。
3. 創建新的 Excel 檔案
我們可以在我們的CSharp項目中輕鬆地以程式化的方式創建一個新的Excel工作表並在其中插入數據。 為了實現這一點,IronXL 提供了 WorkBook.Create
方法。()`函數,用於創建一個新的Excel文件。
我們可以使用WorkBook.CreateWorkSheet
來創建所需的任意數量的WorkSheets。()函式。
之後,我們還可以插入資料,如下例所示:
/**
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 文件中從 A3
到 C3
儲存格的第 3 行為 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 文件中的整行資料。 在這個任務中,我們使用 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
行。