跳過到頁腳內容
使用 IRONXL

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

如果你曾經嘗試在 VB.NET 中開啟 Excel 文件,你就會知道在沒有安裝 Microsoft Office 的情況下開啟 Excel 文件有多麼棘手。 傳統的互通方法依賴 Excel 本身,需要複雜的 COM 引用,並且經常會導致版本衝突——尤其是在伺服器或雲端環境中。

這就是IronXL 的用武之地。 這是一個現代化的 .NET 程式庫,可讓您直接讀取 XLSX、XLS、CSV 和 TSV 文件,而無需安裝 Office。 使用 IronXL,您可以編寫更簡潔、更可靠的 VB.NET 程式碼,在任何地方(Windows、Linux 或雲端)處理 Excel 文件,並避免互通性帶來的所有麻煩。 在本指南中,我們將向您展示如何輕鬆上手並開始使用 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.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 程式庫消除了互通的複雜性,避免了版本衝突,並且可以在 Windows、Linux 和雲端環境中無縫運行。 無論您是建立小型庫存檢查器還是處理企業級 Excel 數據,IronXL 都能提供可靠的效能、簡潔的程式碼和強大的錯誤處理。

準備好簡化您的 VB.NET Excel 工作流程了嗎? 立即開始您的 IronXL 免費試用,體驗更快、更簡潔、完全獨立於 Office 的 Excel 檔案處理方式。 瀏覽我們的文件教程,以充分發揮 IronXL 在您的應用程式中的強大功能。

!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110--

常見問題解答

如果沒有 Microsoft Office,如何在 VB.NET 中開啟 Excel 檔案?

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

在 VB.NET 中使用 IronXL 處理 Excel 有什麼好處?

IronXL 為 .NET 簡化 Excel 在 VB.NET 中的處理過程,不需要 Microsoft Office 並避免複雜的 COM 參照。它可確保不同環境(如伺服器和雲端平台)的相容性,並有助於防止版本衝突。

是否可以使用 IronXL 同時處理 XLSX 和 XLS 檔案?

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

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

在 VB.NET 中使用 IronXL 處理 Excel 檔案不需要額外的軟體。IronXL 是一個獨立的函式庫,可直接整合到您的 VB.NET 專案中。

IronXL 可以在雲端環境中使用嗎?

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

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

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

IronXL 是否與不同的 VB.NET 版本相容?

IronXL 與各種版本的 VB.NET 相容,因此對於使用不同版本 .NET Framework 的開發人員而言,IronXL 是一套通用的解決方案。

在 VB.NET 中使用 Excel 的傳統 Interop 方法常遇到哪些挑戰?

傳統的 Interop 方法通常需要 Microsoft Office,涉及複雜的 COM 參照,而且容易發生版本衝突,尤其是在伺服器或雲端環境中。IronXL 提供了更可靠、更直接的方法,為這些挑戰提供了解決方案。

IronXL.Excel 能否用於 Excel 檔案操作,例如編輯或匯出資料?

是的,IronXL 不僅提供讀取 Excel 檔案的功能,還提供編輯和匯出資料的功能,使其成為在 VB.NET 中操作 Excel 檔案的綜合工具。

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

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

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