跳過到頁腳內容
使用 IRONXL

如何在 VB.NET 中開啟 Excel 文件

如果您曾經嘗試在 VB.NET 中開啟 Excel 文件,您就會知道在沒有安裝 Microsoft Office 的情況下,這可能會非常棘手。 傳統的 Interop 方法依賴於 Excel 本身,需要複雜的 COM 參考,並且經常引起版本衝突——尤其是在伺服器或雲端環境中。

這就是 IronXL 的用武之地。 這是一個現代的 .NET 函式庫,可以讓您直接讀取 XLSX、XLS、CSV 和 TSV 檔案,而不需要安裝 Office。 使用 IronXL,您可以編寫更乾淨、更可靠的 VB.NET 代碼,在任何地方(Windows、Linux 或雲端)處理 Excel 文件,而不必承受 Interop 的困擾。 在本指南中,我們將向您展示如何開始並輕鬆地處理 Excel 文件。

如何在我的 VB.NET 專案中安裝 IronXL?

開始使用 IronXL 只需幾秒鐘。 打開 Visual Studio 2022,導航到您的 VB.NET 專案,並使用套件管理器主控台:

Install-Package IronXL.Excel

或者,右鍵單擊您的專案,選擇“管理 NuGet 套件”,搜尋“IronXL”,然後點擊安裝。

如何在 VB.NET 中開啟 Excel 文件:圖 1 - IronXL NuGet 安裝

安裝完成後,將此單一導入語句添加到您的 VB.NET 文件中:

Imports IronXL
Imports IronXL
VB .NET

就是這樣。 沒有複雜的 COM 參考,沒有 Office 依賴,沒有特定版本的程序集。 您的 VB.NET Excel 文件读取器已就緒,可在任何機器上運行。詳細的設置說明,請查看我們的 VB.NET Excel 文件教程

簡單代碼範例:使用 IronXL 讀取 Excel 文檔

這是一個完整的工作範例,用來在 VB.NET 中開啟一個 Excel 工作簿並讀取數據:

Imports IronXL
Module Program
    Sub Main()
        ' Load any Excel file - XLSX, XLS, CSV, or TSV
        Dim workbook As WorkBook = WorkBook.Load("example.xlsx")
        ' Access the worksheet with our sales data (the second sheet)
        Dim worksheet As WorkSheet = workbook.WorkSheets(1)
        ' Read a specific cell value
        Dim revenue As Decimal = worksheet("E2").DecimalValue
        Console.WriteLine($"Order Total: {revenue}")
        ' Read a range of cells
        For Each cell In worksheet("C2:C6")
            Console.WriteLine($"Product: {cell.Text}")
        Next
    End Sub
End Module
Imports IronXL
Module Program
    Sub Main()
        ' Load any Excel file - XLSX, XLS, CSV, or TSV
        Dim workbook As WorkBook = WorkBook.Load("example.xlsx")
        ' Access the worksheet with our sales data (the second sheet)
        Dim worksheet As WorkSheet = workbook.WorkSheets(1)
        ' Read a specific cell value
        Dim revenue As Decimal = worksheet("E2").DecimalValue
        Console.WriteLine($"Order Total: {revenue}")
        ' Read a range of cells
        For Each cell In worksheet("C2:C6")
            Console.WriteLine($"Product: {cell.Text}")
        Next
    End Sub
End Module
VB .NET

WorkBook.The Load() 方法會自動檢測文件格式; 無需指定它是 XLS 還是 XLSX 格式。 通過索引或文件名使用 workbook.GetWorkSheet("Sheet1") 訪問 Excel 工作表。 每個單元格通過 IntValue、DecimalValue、DateTimeValue 或通用的 Text 屬性返回類型值。 更複雜的場景,請參閱我們的 Excel 配方文檔

正如您在此處所見,IronXL 成功開啟了文件並讀取了我們要求其讀取的訂單總數。 它還能夠讀取和提取所有訂單中售出每個產品的信息。

如何在 VB.NET 中開啟 Excel 文件:圖 2 - 讀取 Excel 文件的範例輸出

如何讀取不同類型的 Excel 數據?

IronXL 在讀取 Excel VB.NET 文件時智能處理所有 Excel 數據類型。 以下是如何處理各種數據場景:

' Open workbook from any location using the filename and path
Dim wb As WorkBook = WorkBook.Load("C:\Data\Inventory.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Products")
' Read different data types safely
Dim productName As String = ws("A2").StringValue
Dim quantity As Integer = ws("B2").IntValue  
Dim price As Decimal = ws("C2").DecimalValue
Dim lastUpdated As DateTime = ws("D2").DateTimeValue
' Process entire columns efficiently
Dim totalStock As Decimal = ws("B2:B100").Sum()
Dim maxPrice As Decimal = ws("C2:C100").Max()
' Iterate through all used cells starting at row index 1 to skip header (zero-based index)
 For i As Integer = 1 To ws.Rows.Count - 1
    Dim row = ws.Rows(i)
    ' Stop at first completely empty row
    If row.Columns(0).Value Is Nothing AndAlso row.Columns(1).Value Is Nothing AndAlso
       row.Columns(2).Value Is Nothing AndAlso row.Columns(3).Value Is Nothing Then Exit For
    ' Read values safely
    Dim sku As String = If(row.Columns(0).Value IsNot Nothing, row.Columns(0).StringValue, "")
    Dim stock As Integer = If(row.Columns(1).Value IsNot Nothing, row.Columns(1).IntValue, 0)
    Dim priceVal As Decimal = If(row.Columns(2).Value IsNot Nothing, row.Columns(2).DecimalValue, 0D)
    Dim rwLastUpdated As DateTime? = If(row.Columns(3).Value IsNot Nothing, row.Columns(3).DateTimeValue, Nothing)
    ' Format date
    Dim lastUpdatedStr As String = If(rwLastUpdated.HasValue, rwLastUpdated.Value.ToString("dd/MM/yyyy"), "")
    ' Print only rows with data
    If sku <> "" OrElse stock <> 0 OrElse priceVal <> 0D OrElse lastUpdatedStr <> "" Then
        Console.WriteLine($"SKU: {sku}, Stock: {stock}, Price: {priceVal:C}, Last Updated: {lastUpdatedStr}")
    End If
Next
' Open workbook from any location using the filename and path
Dim wb As WorkBook = WorkBook.Load("C:\Data\Inventory.xlsx")
Dim ws As WorkSheet = wb.GetWorkSheet("Products")
' Read different data types safely
Dim productName As String = ws("A2").StringValue
Dim quantity As Integer = ws("B2").IntValue  
Dim price As Decimal = ws("C2").DecimalValue
Dim lastUpdated As DateTime = ws("D2").DateTimeValue
' Process entire columns efficiently
Dim totalStock As Decimal = ws("B2:B100").Sum()
Dim maxPrice As Decimal = ws("C2:C100").Max()
' Iterate through all used cells starting at row index 1 to skip header (zero-based index)
 For i As Integer = 1 To ws.Rows.Count - 1
    Dim row = ws.Rows(i)
    ' Stop at first completely empty row
    If row.Columns(0).Value Is Nothing AndAlso row.Columns(1).Value Is Nothing AndAlso
       row.Columns(2).Value Is Nothing AndAlso row.Columns(3).Value Is Nothing Then Exit For
    ' Read values safely
    Dim sku As String = If(row.Columns(0).Value IsNot Nothing, row.Columns(0).StringValue, "")
    Dim stock As Integer = If(row.Columns(1).Value IsNot Nothing, row.Columns(1).IntValue, 0)
    Dim priceVal As Decimal = If(row.Columns(2).Value IsNot Nothing, row.Columns(2).DecimalValue, 0D)
    Dim rwLastUpdated As DateTime? = If(row.Columns(3).Value IsNot Nothing, row.Columns(3).DateTimeValue, Nothing)
    ' Format date
    Dim lastUpdatedStr As String = If(rwLastUpdated.HasValue, rwLastUpdated.Value.ToString("dd/MM/yyyy"), "")
    ' Print only rows with data
    If sku <> "" OrElse stock <> 0 OrElse priceVal <> 0D OrElse lastUpdatedStr <> "" Then
        Console.WriteLine($"SKU: {sku}, Stock: {stock}, Price: {priceVal:C}, Last Updated: {lastUpdatedStr}")
    End If
Next
VB .NET

IronXL 自動處理空單元格、合併單元格和公式。 VB.NET Excel 函式庫在讀取公式時重新計算公式,以確保您始終獲得當前值。 對於大型數據集,使用 彙總功能 如 Sum()、Average()、Min() 和 Max() 以獲得最佳性能。 需要導出數據? 了解如何將 Excel 轉換為 CSV

如何在 VB.NET 中開啟 Excel 文件:圖 3 - 讀取並顯示使用單元格內的數據

有什麼實際範例可用於生產使用?

讓我們建立一個真正的庫存檢查器,使用 VB.NET 處理多個 Excel 工作表以開啟 Excel 文件:

Imports IronXL
Imports System.IO
Public Class ExcelInventoryReader
    Public Function CheckLowStock(filePath As String) As List(Of String)
        Dim lowStockItems As New List(Of String)
        Try
            Dim workbook As WorkBook = WorkBook.Load(filePath)
            ' Process all worksheets in the workbook
            For Each sheet As WorkSheet In workbook.WorkSheets
                Console.WriteLine($"Checking {sheet.Name}...")
                ' Find items with stock below 10 units
                For rowIndex As Integer = 2 To sheet.RowCount
                    Dim itemName As String = sheet($"A{rowIndex}").StringValue
                    Dim stockLevel As Integer = sheet($"B{rowIndex}").IntValue
                    If stockLevel < 10 AndAlso Not String.IsNullOrEmpty(itemName) Then
                        lowStockItems.Add($"{itemName} - {stockLevel} units ({sheet.Name})")
                    End If
                Next
            Next
        Catch ex As Exception
            Console.WriteLine($"Error reading Excel file: {ex.Message}")
        End Try
        Return lowStockItems
    End Function
End Class
Imports IronXL
Imports System.IO
Public Class ExcelInventoryReader
    Public Function CheckLowStock(filePath As String) As List(Of String)
        Dim lowStockItems As New List(Of String)
        Try
            Dim workbook As WorkBook = WorkBook.Load(filePath)
            ' Process all worksheets in the workbook
            For Each sheet As WorkSheet In workbook.WorkSheets
                Console.WriteLine($"Checking {sheet.Name}...")
                ' Find items with stock below 10 units
                For rowIndex As Integer = 2 To sheet.RowCount
                    Dim itemName As String = sheet($"A{rowIndex}").StringValue
                    Dim stockLevel As Integer = sheet($"B{rowIndex}").IntValue
                    If stockLevel < 10 AndAlso Not String.IsNullOrEmpty(itemName) Then
                        lowStockItems.Add($"{itemName} - {stockLevel} units ({sheet.Name})")
                    End If
                Next
            Next
        Catch ex As Exception
            Console.WriteLine($"Error reading Excel file: {ex.Message}")
        End Try
        Return lowStockItems
    End Function
End Class
VB .NET

這段即將投產的 VB.NET 代碼展示了錯誤處理、多表處理和實際業務邏輯。 IronXL 能夠高效處理高達 10MB 的內存文件。 對於較大的文件,考慮使用 特定範圍選擇進行分塊處理。 常見問題,例如文件權限,在我們的 故障排除指南中有涵蓋。 關於 VB.NET Excel 自動化的討論, Microsoft Q&A 論壇提供社群支持。

結論

使用 IronXL,在 VB.NET 中讀取和處理 Excel 文件從未如此簡單 — 並且您不需要安裝 Microsoft Office。 從安全讀取多種類型的數據,迭代大型工作表,處理公式和空單元格到處理多工作簿,IronXL 簡化了 Excel 自動化的每一個方面。

這個現代化的 .NET 函式庫消除了 Interop 的複雜性,避免了版本衝突,並能無縫運行於 Windows、Linux 和雲端環境。 無論您是建立一個小型庫存檢查器,還是處理企業級 Excel 數據,IronXL 都提供可靠的性能、精簡的代碼和穩健的錯誤處理。

準備好簡化您的 VB.NET Excel 工作流程了嗎? 立即開始您的 IronXL 免費試用,體驗更快速、更乾淨、完全獨立於 Office 的 Excel 文件處理方式。 Explore our documentation and tutorials to unlock the full power of IronXL in your applications.

立即開始使用 IronXL。
green arrow pointer

常見問題解答

如何在 VB.NET 中開啟不需要 Microsoft Office 的 Excel 檔案?

您可以使用 IronXL 庫在 VB.NET 中開啟和讀取 Excel 檔案,而無需 Microsoft Office。IronXL 提供了一種簡單的方式來處理 Excel 檔案,無需 Microsoft Office 或複雜的 Interop 方法。

在 VB.NET 中使用 IronXL 進行 Excel 處理的好處是什麼?

IronXL 通過消除對 Microsoft Office 的需求以及避免複雜的 COM 參考,簡化了 VB.NET 中的 Excel 處理。它確保了不同環境(如伺服器和雲平台)中的兼容性,並有助於防止版本衝突。

可以使用 IronXL 處理 XLSX 和 XLS 檔案嗎?

可以,IronXL 支援處理 XLSX 和 XLS 檔案格式,允許您在 VB.NET 應用中開啟、讀取和操作這些 Excel 檔案。

使用 IronXL 是否需要安裝任何其他軟體?

不用,使用 IronXL 進行 VB.NET 中的 Excel 檔案處理不需要任何其他軟體。IronXL 是一個獨立的庫,直接整合到您的 VB.NET 專案中。

IronXL 能在雲端環境中使用嗎?

可以,IronXL 被設計為無縫運行於雲端環境,避免了傳統 Excel Interop 方法在伺服器或雲平台中常遇到的版本衝突問題。

IronXL 如何處理 Excel 檔案兼容性?

IronXL 通過支援多種 Excel 檔案格式如 XLSX 和 XLS 來確保兼容性,並提供強大的功能來操作和處理這些檔案,而無需依賴 Microsoft Office。

IronXL 與不同版本的 VB.NET 兼容嗎?

IronXL 與各版本的 VB.NET 兼容,這使其成為開發者在不同的 .NET 框架版本中使用的多功能解決方案。

使用傳統 Interop 方法處理 VB.NET 中的 Excel 時的常見挑戰是什麼?

傳統的 Interop 方法通常需要 Microsoft Office,涉及複雜的 COM 參考,並且在伺服器或雲端環境中特別容易發生版本衝突。IronXL 透過提供一種更可靠和簡單的方法來解決這些挑戰。

IronXL 可以用來操作 Excel 檔案,例如編輯或匯出數據嗎?

可以,IronXL 不僅提供讀取 Excel 文件的功能,還提供編輯和匯出數據的功能,使其成為 VB.NET 中 Excel 檔案操作的綜合工具。

在哪裡可以找到使用 IronXL 的 VB.NET 工作程式碼範例?

您可以在 IronXL 文檔和教程中找到使用 IronXL 的 VB.NET 工作程式碼範例,這些文檔和教程提供了處理不需要 Microsoft Office 的 Excel 檔案的逐步指導。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。