跳至页脚内容
使用 IRONXL

VB.NET 使用 IronXL 读取 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 Processing? 通过 Visual Studio 中的 NuGet 包管理器控制台安装 IronXL。 打开您的 VB.NET 项目并运行: ```shell :ProductInstall ``` !a href="/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-1.webp">VB.NET Reading Excel Files Using IronXL:无需 Microsoft Office 的分步指南:图片 1 - 安装 安装后,在 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)` 通过索引检索新工作簿中的任何工作表。 ### 输入 !a href="/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-2.webp">VB.NET Reading Excel Files Using IronXL:无需 Microsoft Office 的分步指南:图片 2 - Excel 输入示例。 ### 输出 !a href="/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-3.webp">VB.NET Reading Excel Files Using IronXL:无需 Microsoft Office 的分步指南:图片 3 - 控制台输出 对于受密码保护的 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 行? 处理多条记录需要遍历 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` 检查可优雅地处理空单元格,防止控制台输出中出现空行。 要处理多列整行,可使用嵌套循环,或通过将行索引与列字母组合来访问单元格。 您还可以使用行计数来确定何时停止循环。 ### 输出 !a href="/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-4.webp">VB.NET Reading Excel Files Using IronXL:无需 Microsoft Office 的分步指南:图片 4 - Excel 行输出。 `Rows` 属性允许您逐行遍历整个 [工作表数据范围](/csharp/excel/how-to/select-range/),使您能够以单元格值数组的形式访问每一行。

如何对 Excel 数据进行计算? IronXL 包括内置的聚合函数,可进行常用计算,无需编写手动循环。 这些函数可直接用于单元格范围,并与 LINQ 集成,用于高级查询。 应用程序接口可以方便地从任何电子表格中检索统计数据。 ```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` 块可处理文件丢失或数据损坏等常见问题,防止应用程序崩溃。 ### 输出 !a href="/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-5.webp">VB.NET Reading Excel Files Using IronXL:无需 Microsoft Office 的分步指南:图片 5 - 雇员数据输出 您还可以在 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 ``` 本示例展示了带有 `ByVal sender As Object` 和 `ByVal e As EventArgs` 参数的 `Private Sub` 事件处理程序如何将 IronXL 集成到桌面表单中。 带有 `End Class` 的类结构遵循标准的 VB.NET 标准模式。 ### 输出 !a href="/static-assets/excel/blog/vb-net-read-excel/vb-net-read-excel-6.webp">VB.NET Reading Excel Files Using IronXL:无需 Microsoft Office 的分步指南:图像 6 - Windows 窗体输出 ## 结论 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 库,允许开发人员在无需安装 Microsoft Office 的情况下读取、编辑和创建 XLSX 和 XLS 等各种格式的 Excel 文件。

IronXL 如何用于在 VB.NET 中读取 Excel 文件?

IronXL for .NET 可以在 VB.NET 中使用,通过将文件加载到 WorkBook 对象中来读取 Excel 文件,从而可以访问 WorkBook 中 WorkSheet 的数据。

为什么选择 IronXL 而不是 Microsoft Office Interop 来读取 Excel 文件?

IronXL 的部署过程更简单,因为它不需要安装 Microsoft Office,省去了复杂的依赖关系,减少了令人头疼的部署问题。

IronXL.Excel 可以处理哪些类型的 Excel 文件格式?

IronXL.Excel 可以处理各种 Excel 文件格式,包括 XLSX 和 XLS,因此可以满足不同的数据处理需求。

IronXL 能高效处理大型 Excel 文件吗?

是的,IronXL.Excel 针对性能进行了优化,可以高效处理大型 Excel 文件,因此适合需要处理大量数据的应用程序。

除了 VB.NET 之外,IronXL 兼容其他 .NET 语言吗?

是的,IronXL 与 C# 和 F# 等其他 .NET 语言兼容,为在不同环境中工作的开发人员提供了灵活性。

IronXL 是否支持在未安装 Microsoft Office 的情况下读取 Excel 文件?

是的,IronXL.Excel 的主要功能之一是无需 Microsoft Office 即可读取 Excel 文件,从而简化了部署并降低了系统要求。

商业软件使用 IronXL 有什么好处?

IronXL.Excel 提供了易于使用的方法来读取和处理 Excel 数据,因此非常适合需要进行数据分析、报告或与 Excel 电子表格集成的商业软件。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。