如何在 VB.NET 中撰寫 Excel 文件(簡便方法)
使用 Office Interop 一直是自動化 Microsoft Excel 任務的事實標準選擇,但它存在一些明顯的缺點——效能問題、伺服器端複雜性以及需要在電腦上安裝 Microsoft Excel。
本指南示範了一種更現代、更有效率的方法,教您如何在 VB.NET 中建立和寫入 Excel 檔案。 我們將使用IronXL for .NET ,這是一個專門為幫助開發人員建立、讀取和編輯 Excel 電子表格而建立的庫,無需依賴 Office Interop。您將看到如何僅用幾行直覺的程式碼來處理常見任務,例如建立新文件、從集合寫入資料以及修改現有文件。
如何在VB.NET開始使用Excel自動化?
要開始在 VB.NET 專案中寫入 Excel 文件,首先需要新增 IronXL 庫。 過程很簡單,可以直接在 Visual Studio 中完成。
首先,請確保您的開發環境已準備就緒:
- Visual Studio 2022或更高版本。
- 一個面向.NET Framework 4.6.2 或更高版本,或.NET Core/.NET 5+ 的活躍專案。 IronXL 與所有現代 .NET 版本相容,包括 .NET 9 和 10。
接下來,安裝 IronXL NuGet 套件:
- 在 Visual Studio 中開啟NuGet 套件管理器。
- 搜尋軟體包
IronXL.Excel。 - 點選"安裝"。
或者,您也可以透過軟體包管理器控制台使用以下命令進行安裝:
Install-Package IronXL.Excel
在 Visual Studio 的選單中找到 NuGet 套件管理器,找到用於 VB.NET Excel 整合的正確套件。
安裝完成後,就可以開始寫程式碼了。 只需在 VB.NET 檔案的頂部新增 Imports IronXL,即可將程式庫的類別引入作用域。
在 NuGet 套件管理器 UI 中搜尋 IronXL 套件 正在尋找 IronXL 軟體包,以便安裝使用 VB.NET 將資料寫入 Excel 檔案所需的庫。
如何建立一個新的Excel檔案並向其中寫入資料?
從頭開始建立一個新的Excel檔案是一項基本任務。 使用 IronXL,您可以產生工作簿、新增工作表,並使用任何來源(例如物件集合)的資料填入儲存格。 這非常適合匯出應用程式資料或產生每日報告等任務。
我們來看一個實際例子。 假設我們有一份產品資料列表,想要將其匯出到 Excel 表格中。
將集合寫入新的 Excel 工作表
以下程式碼示範如何取得 List(Of Product) 並將其內容寫入新建立的 Excel 檔案。
Imports IronXL
Imports System.Collections.Generic
Imports System.Linq
Public Class Product
Public Property ID As Integer
Public Property Name As String
Public Property Price As Decimal
End Class
Module Program
Sub Main(args As String())
' 1. Prepare a list of data to write to Excel.
Dim products As New List(Of Product) From {
New Product With {.ID = 1, .Name = "Laptop", .Price = 1200.50D},
New Product With {.ID = 2, .Name = "Keyboard", .Price = 75.00D},
New Product With {.ID = 3, .Name = "Mouse", .Price = 25.99D}
}
' 2. Create a new Excel workbook and select the default worksheet.
Dim workbook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' 3. Write headers for our data.
sheet("A1").Value = "Product ID"
sheet("B1").Value = "Product Name"
sheet("C1").Value = "Price"
' Style the header row.
Dim headerRange = sheet.GetRange("A1:C1")
headerRange.Style.Font.Bold = True
headerRange.Style.SetBackgroundColor("#D3D3D3") ' Light Gray
' 4. Iterate through the product list and write data to subsequent rows.
For i As Integer = 0 To products.Count - 1
Dim product = products(i)
Dim row = i + 2 ' Start from the second row
sheet("A" & row).Value = product.ID
sheet("B" & row).Value = product.Name
sheet("C" & row).Value = product.Price
Next
' 5. Apply currency formatting to the price column.
Dim priceColumn = sheet.GetRange("C2:C" & products.Count + 1)
priceColumn.Style.Format = "$#,##0.00"
' 6. Auto-size columns for better readability.
sheet.Columns.AutoFit()
' 7. Save the newly created and populated workbook to a file.
workbook.SaveAs("ProductReport.xlsx")
End Sub
End Module
如何運作
此程式碼範例展示了 IronXL API 在自動化 Excel 輸入方面的簡潔性和強大功能。
1.資料準備:我們從一個簡單的 Product 類別和一個 List(Of Product) 開始,它代表我們要匯出的資料。 這模擬從資料庫或其他業務邏輯層提取資料。
2.建立工作簿和工作表: WorkBook.Create() 在記憶體中產生一個新的、空白的 Excel 工作簿。 每個新工作簿都會自動包含一個工作表,我們可以透過 DefaultWorkSheet 屬性存取該工作表。 對於更複雜的文檔,您可以使用 CreateWorkSheet 方法新增更多工作表。
3.寫入資料:我們使用熟悉的 A1 風格表示法存取儲存格(例如,sheet("A1"))。 .Value 屬性既可用於設定儲存格的內容,也可用於取得儲存格的內容。 IronXL 會自動處理數字、字串和日期的資料類型轉換。
4.樣式和格式: IronXL 提供全面的樣式 API。 在這個例子中,我們選擇一組單元格,並對標題套用粗體格式和背景顏色。 我們也使用 Style.Format 屬性對價格列套用貨幣格式,這是建立專業報表不可或缺的功能。 如需更多樣式選項,請查閱Style 物件的 API 文件。
5.儲存檔案:最後,workbook.SaveAs("ProductReport.xlsx") 將記憶體中的工作簿寫入檔案系統。 IronXL 支援多種格式,包括 .xlsx、.xls、.csv 和 .tsv,讓您可以靈活地匯出資料。
如何將資料寫入現有的Excel檔案?
通常情況下,你不需要建立新文件,而是將資料加入現有文件。 這通常用於記錄日誌、向資料集追加記錄或更新報告。 IronXL 讓這個過程就像建立新檔案一樣簡單。
以下範例示範如何開啟現有電子表格,找到最後使用的行,並追加新資料。
Imports IronXL
Imports System.Collections.Generic
Imports System.Linq
' (Assuming the Product class from the previous example is available)
Module Program
Sub Main(args As String())
' Ensure the file from our previous example exists.
If Not System.IO.File.Exists("ProductReport.xlsx") Then
Console.WriteLine("Please run the first example to create ProductReport.xlsx")
Return
End If
' 1. Load the existing workbook from the file system.
Dim workbook As WorkBook = WorkBook.Load("ProductReport.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' 2. Find the first empty row to append new data.
' The LastRowUsed property gives us the last row with data.
Dim lastRow = sheet.Info.LastRowUsed
Dim newRowIndex = lastRow.RowNumber + 1
' 3. Define the new data to be added.
Dim newProducts As New List(Of Product) From {
New Product With {.ID = 4, .Name = "Monitor", .Price = 350.00D},
New Product With {.ID = 5, .Name = "Webcam", .Price = 99.99D}
}
' 4. Loop through the new data and write it to the worksheet.
For i As Integer = 0 To newProducts.Count - 1
Dim product = newProducts(i)
Dim currentRow = newRowIndex + i
sheet("A" & currentRow).Value = product.ID
sheet("B" & currentRow).Value = product.Name
sheet("C" & currentRow).Value = product.Price
Next
' 5. Re-apply formatting and auto-fit columns to include new data.
Dim priceColumn = sheet.GetRange("C2:C" & sheet.Info.LastRowUsed.RowNumber)
priceColumn.Style.Format = "$#,##0.00"
sheet.Columns.AutoFit()
' 6. Save the changes back to the original file.
workbook.Save()
' Or save as a new file to preserve the original.
' workbook.SaveAs("ProductReport_Updated.xlsx")
End Sub
End Module
更深入的解釋
修改現有文件遵循載入-編輯-儲存的邏輯模式。
1.載入工作簿:我們使用 WorkBook.Load("ProductReport.xlsx"),而不是 WorkBook.Create()。 這會開啟指定的文件,並將其內容解析為 WorkBook 對象,以便進行操作。
2.尋找插入點:追加資料的一個關鍵挑戰是找到從哪裡開始寫入。 IronXL 透過 sheet.Info.LastRowUsed 屬性簡化了這個過程,該屬性傳回包含資料的最後一個 Row 物件。 我們只需取得它的行號,然後加一,即可找到第一個空行。
3.追加資料:寫入新資料的過程與前面的範例相同。 我們遍歷新的 Product 列表,並將新識別出的空白行中的儲存格填入該列表中。
4.儲存變更: workbook.Save() 方法會將修改後的工作簿從記憶體覆寫到原始檔案。 如果需要保留原始文件,只需使用 SaveAs() 並加上新的文件名,如註解掉的行所示。
如何將 DataTable 寫入 Excel 工作表?
對於使用 SQL Server 等資料來源的開發人員來說,一項常見的任務是將 DataTable 的內容直接寫入 Excel 表格。 IronXL 透過內建方法簡化了這個過程,無需手動遍歷行和列。
本範例展示如何一步完成填充 DataTable 並將其匯出到新的 Excel 檔案。
Imports IronXL
Imports System.Data
Module Program
Sub Main(args As String())
' 1. Create and populate a DataTable. This often comes from a database query.
Dim dt As New DataTable("EmployeeData")
dt.Columns.Add("EmployeeID", GetType(Integer))
dt.Columns.Add("FullName", GetType(String))
dt.Columns.Add("Department", GetType(String))
dt.Columns.Add("HireDate", GetType(Date))
dt.Rows.Add(101, "John Smith", "Sales", New Date(2022, 5, 20))
dt.Rows.Add(102, "Jane Doe", "Engineering", New Date(2021, 8, 15))
dt.Rows.Add(103, "Peter Jones", "Marketing", New Date(2023, 1, 10))
' 2. Create a new workbook.
Dim workbook As WorkBook = WorkBook.Create()
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Employees")
' 3. Write the DataTable to the worksheet starting at cell A1.
' The second parameter (True) indicates that column headers should be included.
sheet.Write(dt, "A1", True)
' 4. Apply some styling for a more polished look.
sheet.Columns.AutoFit()
Dim headerRange = sheet.GetRange("A1:D1")
headerRange.Style.Font.Bold = True
headerRange.Style.SetBackgroundColor("#C5D9F1") ' Light Blue
Dim dateColumn = sheet.GetRange("D2:D" & dt.Rows.Count + 1)
dateColumn.Style.Format = "yyyy-mm-dd"
' 5. Save the workbook.
workbook.SaveAs("EmployeeDatabaseExport.xlsx")
End Sub
End Module
sheet.Write() 方法對此目的來說非常有效率。 它可以聰明地將 DataTable 結構對應到工作表,如果指定,還包括列標題。 對於任何資料驅動型應用程式來說,這都是一項強大的功能,與手動迭代相比,可以顯著節省時間。 有關資料匯入和匯出的更多詳細信息,請查看我們關於不同電子表格格式之間轉換的教程。
編寫 Excel 檔案時我還能做些什麼?
資料錄入只是開始。 一個強大的 VB.NET Excel 庫應該提供一整套功能,以自動執行任何電子表格任務。 IronXL 提供廣泛的功能,包括:
-公式:透過程式設定和計算公式。 您可以將公式指派給儲存格的 Value(例如,sheet("C1").Value = "=SUM(A1:B1)"),IronXL 將計算結果。
-圖表:根據工作表資料建立各種類型的圖表,以視覺化資訊。
-資料驗證:對儲存格強制執行規則,例如只允許特定範圍內的數字或下拉清單中的值。
-條件格式:根據儲存格的值套用樣式,幫助突顯重要資料點。
-安全與保護:使用密碼保護工作表或整個工作簿,以控制存取並防止修改。
這些功能可讓您直接在 .NET 應用程式中完全自動化複雜的報表產生和資料分析工作流程。
立即開始使用 VB.NET 向 Excel 文件寫入資料
如前所述,使用 IronXL 等現代程式庫可以大幅簡化在 VB.NET 中向 Excel 檔案寫入資料的過程。 透過避免 Office Interop 的複雜性和依賴性,您可以建立更可靠、效能更佳、更易於部署的應用程式。 無論您需要從頭開始建立 Excel 檔案、將資料追加到現有報表,還是匯出 DataTable,IronXL 都提供了一個直觀而強大的 API 來有效地完成工作。
您可以下載 IronXL並使用免費試用許可證進行試用,看看它如何輕鬆地整合到您的專案中。
對於有更廣泛需求的用戶,請記住 IronXL 也是Iron Suite for .NET的一部分。 只需一個許可證,即可存取一套全面的庫,用於處理 PDF、條碼、OCR 等,為任何 .NET 開發人員提供卓越的價值。
常見問題解答
我如何在 VB.NET 中無需使用 Office Interop 寫入 Excel 文件?
您可以使用 IronXL 庫在 VB.NET 中寫入 Excel 文件,而無需使用 Office Interop。IronXL 使您能夠無縫創建、閱讀和操作 Excel 文件而無需安裝 Microsoft Excel。
在 Excel 自動化中使用 IronXL 相較於 Office Interop 的好處是什麼?
IronXL 提供了相對於 Office Interop 的顯著優勢,例如提高性能、更簡單的部署,以及在無需安裝 Microsoft Excel 的伺服器上運行的能力。它簡化了 .NET 應用程式中的 Excel 自動化任務。
如何在 VB.NET 項目中安裝 IronXL 以便操作 Excel 文件?
要在 VB.NET 項目中安裝 IronXL,請使用 Visual Studio 中的 NuGet 套件管理器,搜索 IronXL.Excel 並安裝。或者,使用 Package Manager Console 並輸入命令:Install-Package IronXL.Excel。
如何在 VB.NET 中創建新的 Excel 文件並插入資料?
使用 IronXL,您可以通過調用 WorkBook.Create() 創建新的 Excel 文件。訪問工作表並使用 A1 標記插入資料,例如 sheet("A1").Value = "Example Data"。使用 SaveAs() 方法保存文件。
如何使用 IronXL 將資料附加到現有的 Excel 文件?
要使用 IronXL 將資料附加到現有的 Excel 文件中,請使用 WorkBook.Load("filename.xlsx") 加載該工作簿。通過 sheet.Info.LastRowUsed 確定下一個空行並插入新資料。使用 workbook.Save() 保存修改。
在 VB.NET 中將 DataTable 導出到 Excel 表格中是否可行?
可以的,IronXL 簡化了將 DataTable 導出到 Excel 表格中。使用 sheet.Write() 方法可高效地將整個表格傳輸到工作表。
IronXL 能夠處理什麼格式的 Excel 文件?
IronXL 支援多種 Excel 文件格式,包括 .xlsx、.xls、.csv 和 .tsv,允許靈活處理各種類型的電子表格資料。
我可以使用 IronXL 格式化 Excel 單元格並使用公式嗎?
可以的,IronXL 提供了豐富的格式化和公式支援。您可以以程式化方式調整字體、顏色、邊框和數字格式,並設置 Excel 公式如 "=SUM(A1:A10)" 進行計算。


