跳至頁尾內容
使用 IRONXL

使用 IronXL 讀取 VB.NET Excel 檔案:無需 Microsoft Office 的逐步指南

在 VB.NET 應用程式中讀取 Excel 檔案是商業軟體、資料處理工具和報表系統的共同需求。 使用 Microsoft Office Interop 的傳統方法需要在每個 Windows 桌面或伺服器上安裝 Excel 應用程式,產生複雜的依賴關係,造成部署上的麻煩。 本教學示範如何使用 IronXL 在 VB.NET 中讀取 Excel 檔案資料,IronXL 是一個現代化的 .NET 函式庫,無須安裝任何 Office 即可處理 XLSX 和 XLS 檔案格式。

VB.NET(在開發者社群中通常稱為 VB)提供多種閱讀 Excel 檔案的選項。 VB.NET 開發人員可以選擇使用 Microsoft Office Interop 或第三方函式庫來存取和處理 Excel 試算表。 有幾個函式庫可用於在 VB.NET 中讀取 Excel 檔案,包括微軟自己的工具和第三方解決方案。 許多這些函式庫,例如 IronXL,都可以透過 NuGet 套件管理員輕鬆安裝,簡化 VB.NET 專案的設定程序。

在記錄或解釋 Excel 工作流程時,開發人員通常會加入電子表格預覽、工作表佈局或程式碼與輸出比較等圖像,以直觀展示 Excel 資料的結構與處理方式。 使用 IronXL for .NET 之類的函式庫,可確保 Excel 圖像中顯示的資料與您的 VB.NET 應用程式在程式上讀取的資料完全相符,進而提高技術文件和教學的清晰度。


如何安裝 IronXL for VB.NET Excel 處理程式? 透過 Visual Studio 中的 NuGet Package Manager Console 安裝 IronXL。 開啟您的 VB.NET 專案並執行: ```shell :ProductInstall ``` ![VB.NET Reading Excel Files Using IronXL:沒有 Microsoft Office 的逐步指南:圖片 1 - 安裝](/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-1.webp) 安裝完成後,在您的 VB.NET 程式碼檔案頂端新增命名空間匯入: ```vb Imports IronXL Imports System ``` 這就是整個設定 - 按照這些簡單的指示,您就準備好了。 沒有 COM 參考、沒有 Office Primary Interop Assemblies,也不需要管理特定版本的依賴關係。 您的專案已準備好建立、讀取、寫入及處理 Excel 檔案。 --- ## 瞭解 Excel 檔案格式 在 VB.NET 中處理 Excel 檔案時,瞭解不同的 Excel 檔案格式對於建立可有效讀取、寫入及處理試算表資料的強大應用程式至關重要。 您會遇到的最常見格式是 XLS、XLSX 和 XLSB。 每種格式都有其獨特的特性,會影響您在 .NET 專案中存取和處理 Excel 資料的方式。 **XLS** 是 Excel 2003 及更早版本使用的傳統 Excel 檔案格式。 它以二進位結構儲存資料,如果沒有專門的函式庫,直接操作會更具挑戰性。 **XLSX** 由 Excel 2007 引進,目前是大多數現代 Excel 工作簿的預設格式。 XLSX 檔案實際上是包含 XML 檔案的 ZIP 檔案,使其更容易進行程式化操作,也更適合跨平台應用程式。 **XLSB** 是專為大型 Excel 檔案設計的二進位格式,可為大量資料集提供更快速的讀寫作業。 當您在 VB.NET 中建立 Excel 檔案時,選擇適合您需求的格式非常重要。 IronXL 之類的函式庫可根據您的需求,輕鬆產生 XLS、XLSX、CSV 或 TSV 格式的新工作簿。 例如,如果您需要與不同平台上的使用者分享資料或與其他系統整合,XLSX 或 CSV 可能是最佳選擇。如果您使用的是舊式系統,您可能需要支援較舊的 XLS 檔案格式。 這些格式之間的差異也會影響 Excel 檔案的讀寫方式。 例如,XLSX 檔案以 XML 為基礎,較容易解析和操作,而 XLS 檔案則需要處理二進位資料。 使用 IronXL,您可以使用 `WorkBook.Load` 方法讀取 Excel 檔案,不論其格式為何--只要提供檔案路徑,函式庫就會自動偵測格式。 載入後,您可以存取 Excel 工作簿,遍歷每個 Excel 工作表,並使用 `Value` 屬性或 `Cells` 集合擷取或更新儲存格值。 在 VB.NET 中操縱 Excel 檔案時,經常需要處理不同的資料類型,例如數字、文字和日期。 `FormatValue` 方法可讓您以所需格式顯示 Excel 資料,確保您的應用程式能清楚呈現資訊。

如何載入和讀取 Excel 檔案? `WorkBook.Load` 方法會開啟任何 Excel 檔案,並傳回一個包含所有工作表和 Excel 資料的工作簿物件。 IronXL 可自動偵測檔案格式,支援 XLSX、XLS、XLSM、CSV 和 TSV 試算表格式。 ```vb Imports IronXL Imports System Module Program Sub Main() ' Load the Excel workbook from file path Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx") ' Access the first worksheet in the workbook Dim sheet As WorkSheet = workbook.DefaultWorkSheet ' Read a single cell value using the Value property Dim companyName As String = sheet("A1").StringValue Console.WriteLine("Company: " & companyName) End Sub End Module ``` `WorkBook.Load` 方法接受一個檔案路徑字串,並傳回一個 [WorkBook 物件](/csharp/excel/object-reference/api/IronXL.WorkBook.html),該物件提供對試算表內容的完整存取。 `DefaultWorkSheet` 屬性會擷取第一個工作表,而 `StringValue` 屬性則會以文字形式擷取儲存格內容。 您也可以使用 `workbook.GetWorkSheet("Sheet1")` 依名稱存取工作表,或使用 `workbook.WorkSheets(0)` 依索引存取新工作簿中的任何工作表。 ### 輸入 ![VB.NET Reading Excel Files Using IronXL:不需要 Microsoft Office 的逐步指南:圖片 2 - Excel 輸入範例](/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-2.webp) ### 輸出 ![VB.NET Reading Excel Files Using IronXL:不需要 Microsoft Office 的逐步指南:圖片 3 - 控制台輸出](/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-3.webp) 對於有密碼保護的 Excel 檔案,請傳輸密碼作為第二個參數:`WorkBook.Load("Protected.xlsx", "myPassword")`。 此方法適用於您指定的任何檔案名稱。

如何從儲存格讀取不同的資料類型? Excel 單元格包含各種資料類型,包括文字、數字、日期和公式。 IronXL 提供類型化的屬性,以正確格式擷取儲存格數值,無須手動轉換。 每個儲存格物件都會針對不同的資料類型開放一個值屬性。 ```vb Imports IronXL Imports System Module Program Sub Main() Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx") Dim sheet As WorkSheet = workbook.DefaultWorkSheet ' Read different data types from row 2 cells Dim employeeId As Integer = sheet("A2").IntValue Dim employeeName As String = sheet("B2").StringValue Dim salary As Decimal = sheet("D2").DecimalValue Dim hireDate As DateTime = sheet("E2").DateTimeValue ' Display the extracted Excel data Console.WriteLine("ID: " & employeeId.ToString()) Console.WriteLine("Name: " & employeeName) Console.WriteLine("Salary: $" & salary.ToString("N2")) Console.WriteLine("Hired: " & hireDate.ToShortDateString()) End Sub End Module ``` 每個類型化的屬性 (`IntValue`, `StringValue`, `DecimalValue`, `DateTimeValue`) 會自動處理從底層儲存格值的轉換。 `Text` 屬性回傳的顯示值與 Excel 應用程式中顯示的完全相同,而一般 `Value` 屬性則回傳原始資料物件。 對於包含 [Excel 公式](/csharp/excel/how-to/edit-formulas/)的儲存格,IronXL 會計算結果並傳回計算值,因此您無需額外的程式碼即可擷取公式結果。

如何迭代 Excel 行? 處理多筆記錄需要遍歷 Excel 工作表的行和列。 IronXL 的範圍語法可讓您直接使用 VB.NET 的 `For Each` 環路結構。 您可以編寫程式碼,一次過處理任意數量的行。 ```vb Imports IronXL Imports System Module Program Sub Main() Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx") Dim sheet As WorkSheet = workbook.DefaultWorkSheet ' Loop through cells in column B to retrieve employee names Console.WriteLine("Employee List:") For Each cell In sheet("B2:B10") If Not String.IsNullOrEmpty(cell.Text) Then Console.WriteLine(" - " & cell.Text) End If Next End Sub End Module ``` 範圍語法 `sheet("B2:B10")` 選擇從 B2 到 B10 的儲存格,並傳回一個您可以循環使用的可枚举集合。 `String.IsNullOrEmpty` 檢查可優雅地處理空儲存格,防止控制台輸出中出現空行。 若要處理具有多列的整行,請使用巢狀循環,或透過結合行索引與列字母來存取儲存格。 您也可以使用行數來決定何時停止循環。 ### 輸出 ![VB.NET Reading Excel Files Using IronXL:不需要 Microsoft Office 的逐步指南:圖片 4 - Excel 行輸出](/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-4.webp) `Rows` 屬性可讓您在整個 [工作表資料範圍](/csharp/excel/how-to/select-range/)中逐行遍歷,讓您可以存取每一行的單元格值陣列。

如何在 Excel 資料上執行計算? IronXL 包含內建的聚合函數,用於常見的計算,而無需撰寫手動迴圈。 這些函式可直接作用於儲存格範圍,並與 LINQ 整合以進行進階查詢。 API 可讓您輕鬆地從任何試算表擷取統計資料。 ```vb Imports IronXL Imports System Module Program Sub Main() Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx") Dim sheet As WorkSheet = workbook.DefaultWorkSheet ' Calculate salary statistics from column D range Dim totalSalaries As Decimal = sheet("D2:D50").Sum() Dim highestSalary As Decimal = sheet("D2:D50").Max() Dim lowestSalary As Decimal = sheet("D2:D50").Min() ' Display the calculated results Console.WriteLine("Total Payroll: $" & totalSalaries.ToString("N2")) Console.WriteLine("Highest Salary: $" & highestSalary.ToString("N2")) Console.WriteLine("Lowest Salary: $" & lowestSalary.ToString("N2")) End Sub End Module ``` [聚合函數](/csharp/excel/how-to/math-functions/)(Sum、Min、Max、Average)會計算指定儲存格範圍內的結果。 這些方法可自動跳過空儲存格並處理數字轉換,讓薪資計算、庫存總計和統計分析在您的應用程式中簡易實作。

如何建立完整的員工資料閱讀器? 以下是一個實際應用範例,它會載入一份員工試算表、在循環中處理每條記錄,並顯示格式化的輸出與適當的錯誤處理。 此程式碼示範如何建立完整的資料擷取系統。 ```vb Imports IronXL Imports System Module EmployeeDataReader Sub Main() Try ' Load the employee Excel workbook from path Dim workbook As WorkBook = WorkBook.Load("Employees.xlsx") Dim sheet As WorkSheet = workbook.DefaultWorkSheet Console.WriteLine("=== Employee Data Report ===") Console.WriteLine() ' Process each employee row (skip header in first row) Dim rowNumber As Integer = 2 Dim totalSalary As Decimal = 0 Dim employeeCount As Integer = 0 Do While Not String.IsNullOrEmpty(sheet("A" & rowNumber.ToString()).StringValue) ' Retrieve data from each column in the row Dim id As Integer = sheet("A" & rowNumber.ToString()).IntValue Dim name As String = sheet("B" & rowNumber.ToString()).StringValue Dim department As String = sheet("C" & rowNumber.ToString()).StringValue Dim salary As Decimal = sheet("D" & rowNumber.ToString()).DecimalValue ' Display formatted employee record Console.WriteLine("ID: " & id.ToString() & " " & name & " " & department & " $" & salary.ToString("N2")) totalSalary += salary employeeCount += 1 rowNumber += 1 Loop Console.WriteLine() Console.WriteLine("Total Employees: " & employeeCount.ToString()) Console.WriteLine("Total Payroll: $" & totalSalary.ToString("N2")) Catch ex As Exception Console.WriteLine("Error reading Excel file: " & ex.Message) End Try End Sub End Module ``` 本範例展示完整的資料擷取工作流程。 `Do While` 環路會持續執行,直到遇到 A 列中的空白儲存格為止,因此對於具有不同行數的試算表而言非常靈活 - 無需事先知道確切的行數。 每次迭代都會從多列中抽取員工資訊,並累積薪資總額。 `Try-Catch` 區塊可處理遺失檔案或資料損毀等常見問題,防止應用程式當機。 ### 輸出 ![VB.NET Reading Excel Files Using IronXL:不需要 Microsoft Office 的逐步指南:圖片 5 - 僱員資料輸出](/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-5.webp) 您也可以在 VB.NET 中以程式化的方式將資料插入工作表單格。 例如,若要新增員工記錄,您可以使用: ```vb sheet("A10").Value = 1010 ' ID inserted sheet("B10").Value = "Jane Doe" ' Name inserted sheet("C10").Value = "Finance" ' Department inserted sheet("D10").Value = 75000 ' Salary inserted workbook.Save() ``` 這演示了如何使用 VB.NET 程式碼將新資料插入特定的儲存格。 對於 CSV 檔案,請使用 `WorkBook.LoadCSV("data.csv")` 來取代標準的 `Load` 方法,以最佳化逗號分隔格式的解析。 擷取的 Excel 資料可輕鬆與資料庫、報表或 VB.NET 應用程式中的其他商業邏輯整合。 您也可以將擷取到的值填入 `DataTable` 或陣列,以便進一步處理。 **Windows 表單整合:**相同的程式碼可以在 Windows 表單應用程式中運作。 建立一個有兩個按鈕的表單,一個用來載入檔案,另一個用來顯示資料,然後處理點擊事件: ```vb Imports IronXL Imports System.Windows.Forms Public Class Form1 Private workbook As WorkBook Private Sub btnLoad_Click(ByVal sender As Object, ByVal e As EventArgs) workbook = WorkBook.Load("Employees.xlsx") MessageBox.Show("Excel file loaded successfully!") End Sub Private Sub btnDisplay_Click(ByVal sender As Object, ByVal e As EventArgs) If workbook IsNot Nothing Then Dim sheet As WorkSheet = workbook.DefaultWorkSheet Dim name As String = sheet("B2").StringValue MessageBox.Show("First Employee: " & name) End If End Sub End Class ``` 本範例展示 `Private Sub` 事件處理器與 `ByVal sender As Object` 和 `ByVal e As EventArgs` 參數如何將 IronXL 整合到桌面表單中。 具有 `End Class` 的類別結構遵循標準的 VB.NET 標準模式。 ### 輸出 ![VB.NET Reading Excel Files Using IronXL:不需要 Microsoft Office 的逐步指南:圖片 6 - Windows 表單輸出](/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-6.webp) ## 結論 IronXL 將 VB.NET 讀取 Excel 檔案從複雜的 Interop 挑戰轉換成簡單直接的程式碼。 載入工作簿、擷取已輸入的單元值、迭代行和列,以及執行計算,都只需要幾行直覺的語法 - 而無需在 Windows 桌面或伺服器上安裝 Microsoft Office。 無論您要建立的是控制台應用程式、有按鈕的 Windows 表單,或是 ASPX 網頁,相同的程式碼都可以運作。 [立即開始免費試用](trial-license),在您的 VB.NET 專案中實作 Excel 資料處理。 下載 IronXL 並探索 [完整的說明文件](/csharp/excel/docs/),以瞭解進階功能,例如 [建立 Excel 檔案](/csharp/excel/how-to/create-spreadsheet/)、[匯出為多種格式](/csharp/excel/how-to/csharp-convert-xlsx-to-csv/),以及 [儲存格樣式](/csharp/excel/how-to/cell-font-size/)。 IronXL API () 為任何 Excel 操作任務提供了完整的系統 - 無論您需要在 .NET 應用程式中讀取、寫入、建立或操作試算表資料。

常見問題解答

IronXL是什麼?

IronXL 是一個 .NET 程式庫,可讓開發人員讀取、編輯和建立各種格式(例如 XLSX 和 XLS)的 Excel 文件,而無需安裝 Microsoft Office。

如何使用 IronXL 在 VB.NET 中讀取 Excel 檔案?

IronXL 可以在 VB.NET 中使用,透過將檔案載入到 WorkBook 物件中來讀取 Excel 文件,讓您可以存取 WorkBook 中 WorkSheets 中的資料。

為什麼選擇 IronXL 而不是 Microsoft Office Interop 來讀取 Excel 檔案?

IronXL 提供了一個更簡單的部署流程,因為它不需要安裝 Microsoft Office,從而消除了複雜的依賴關係,減少了部署的麻煩。

IronXL可以處理哪些類型的Excel檔案格式?

IronXL 可以處理各種 Excel 檔案格式,包括 XLSX 和 XLS,使其能夠靈活地滿足不同的資料處理需求。

IronXL能否高效處理大型Excel檔案?

是的,IronXL 針對效能進行了最佳化,可以有效地處理大型 Excel 文件,因此適用於需要處理大量資料的應用程式。

IronXL 除了 VB.NET 之外,是否也相容於其他 .NET 語言?

是的,IronXL 與其他 .NET 語言(如 C# 和 F#)相容,為在不同環境下工作的開發人員提供了靈活性。

IronXL 是否支援在未安裝 Microsoft Office 的情況下讀取 Excel 檔案?

是的,IronXL 的一個關鍵特性是它無需 Microsoft Office 即可讀取 Excel 文件,從而簡化部署並降低系統需求。

使用 IronXL 作為企業軟體有哪些好處?

IronXL 提供易於使用的方法來讀取和處理 Excel 數據,使其成為需要數據分析、報告或與 Excel 電子表格整合的商業軟體的理想選擇。

喬迪·巴迪亞
軟體工程師
喬迪精通Python、C#和C++,除了在Iron Software運用這些技能外,他還從事遊戲程式設計。他參與產品測試、產品開發和研究等工作,為產品的持續改進做出了巨大貢獻。豐富的經驗讓他始終保持挑戰性和工作熱情,他表示這是他最喜歡在Iron Software工作的原因之一。喬迪在佛羅裡達州邁阿密長大,畢業於佛羅裡達大學,主修電腦科學和統計學。