跳至页脚内容
使用 IRONXL

如何在 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 包:

  1. 在 Visual Studio 中打开NuGet 包管理器
  2. 搜索IronXl.Excel包。
  3. 点击"安装"。

或者,您也可以通过软件包管理器控制台使用以下命令进行安装:

Install-Package IronXl.Excel

导航到NuGet包管理器 在 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. 数据准备:我们从一个简单的List(Of Product)开始。 这模拟从数据库或其他业务逻辑层提取数据。
  2. 工作簿和工作表创建:WorkBook.Create()在内存中生成一个新的空的Excel工作簿。 每个新工作簿自动包含一个工作表,我们可以通过DefaultWorkSheet属性访问它。 对于更复杂的文档,您可以使用CreateWorkSheet方法添加更多工作表。
  3. 写入数据:我们使用熟悉的A1样式表示法(例如,sheet("A1"))来访问单元格。 .Value属性用于设置和获取单元格的内容。 IronXL 会自动处理数字、字符串和日期的数据类型转换。
  4. 样式和格式化:IronXL提供了一个全面的样式API。 在示例中,我们选择一个Range单元格区域,并应用粗体格式和背景色到我们的标题。 我们还通过Style.Format属性将货币格式应用于价格列,这是创建专业报告的关键功能。 如需更多样式选项,请查阅Style 对象的 API 文档
  5. 保存文件:最后,workbook.SaveAs("ProductReport.xlsx")将内存中的工作簿写入文件系统。 IronXL支持各种格式,包括.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.Create()。 这将打开指定文件并将其内容解析为一个WorkBook对象,准备进行操作。
  2. 找到插入点:追加数据的一个关键问题是找到开始写入的位置。 IronXL通过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 提供广泛的功能,包括:

  • 公式:以编程方式设置和计算公式。 您可以为单元格的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 中写入 Excel 文件而不使用 Office Interop?

您可以使用 IronXL 库在 VB.NET 中写入 Excel 文件,而无需 Office Interop。IronXL 让您可以轻松创建、读取和操作 Excel 文件,而无需安装 Microsoft Excel。

使用 IronXL 而非 Office Interop 进行 Excel 自动化的好处是什么?

IronXL 相对 Office Interop 提供了显著的优势,例如改善的性能、更简单的部署以及在无需安装 Microsoft Excel 的服务器上运行的能力。在 .NET 应用程序中简化了 Excel 自动化任务。

如何在 VB.NET 项目中安装 IronXL 以操作 Excel 文件?

要在 VB.NET 项目中安装 IronXL,请使用 Visual Studio 中的 NuGet 包管理器。搜索 IronXl.Excel 并安装它。或者,使用包管理器控制台执行命令: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 提供了广泛的格式化和公式支持。您可以以编程方式调整字体、颜色、边框和数字格式,并设置像 "=SUM(A1:A10)" 这样的 Excel 公式进行计算。

Jacob Mellor,Team Iron 的首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。

Jacob 拥有曼彻斯特大学土木工程一级荣誉工程学士学位(BEng)(1998-2001 年)。他的旗舰产品 IronPDF 和 Iron Suite for .NET 库在全球的 NuGet 安装量已超过 3000 万次,其基础代码继续为全球使用的开发人员工具提供动力。Jacob 拥有 25 年的商业经验和 41 年的编码专业知识,他一直专注于推动企业级 C#、Java 和 Python PDF 技术的创新,同时指导下一代技术领导者。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me