跳至页脚内容
使用 IRONXL

如何在 VB.NET 中将数据集转换为 Excel

将数据集转换为 Excel 工作表文件是 VB.NET 应用程序中的常见需求,无论您是生成报告、导出数据库查询还是创建数据备份。 虽然使用 Office Interop 的传统方法需要安装 Excel 并包含复杂的 COM 引用,但IronXL 提供了无需依赖 Microsoft Office 的简化方法。

本教程演示如何使用 IronXL 在 VB.NET 中有效地将包含 DataTable 行的数据集转换为 Excel 文件,提供格式选项并支持多种文件格式。

数据集到 Excel 转换为何至关重要?

在 .NET 中,数据集代表数据的内存缓存,包含一个或多个带有行、列和关系的数据表。 将这些数据集转换为 Excel 可实现:

  • 业务报告:将数据库查询转换为格式化的电子表格,供利益相关者使用
  • 数据存档:导出应用程序数据以用于长期存储和分析
  • 跨平台兼容性:与可能无法访问您应用程序的用户共享数据
  • 增强的可视化:利用 Excel 的内置图表和分析工具

IronXL 通过提供一个无需在服务器或开发机上安装 Excel 的直观 API 简化了此过程。该库支持 .NET Framework 4.6.2 及更高版本、.NET Core 和 .NET 5 及更高版本,适合现代应用程序,包括那些部署到 Linux 容器和云环境的应用程序。 有关支持的更多详细信息,请访问IronXL 功能页面

如何在您的 VB.NET 项目中开始使用 IronXL?

在您的 VB.NET 或 .NET 代码项目中设置 IronXL 只需几分钟。 打开 Visual Studio 并导航到您的项目,然后通过 NuGet 包管理器安装 IronXL。

在包管理器控制台中执行:

Install-Package IronXL.Excel

或者,在 NuGet 包管理器 UI 中搜索 "IronXL.Excel" 并单击安装。 该包将自动下载并配置所有必需的依赖项。 您可以在IronXL 安装指南中找到更多安装选项。

安装后,将 IronXL 命名空间添加到 VB.NET 文件中:

Imports IronXL
Imports System.Data
Imports IronXL
Imports System.Data
VB .NET

完成这些导入后,您就可以开始将数据集转换为 Excel 文件了。

如何在 VB.NET 中将数据集转换为 Excel?

让我们从一个创建带有示例数据的数据集并将其导出到 Excel 文件的实际示例开始:

' Create a sample DataSet with product information
Dim dataSet As New DataSet("ProductData")
' Create a DataTable object for products, column headers
Dim productsTable As New DataTable("Products")
productsTable.Columns.Add("ProductID", GetType(Integer))
productsTable.Columns.Add("ProductName", GetType(String))
productsTable.Columns.Add("Price", GetType(Decimal))
productsTable.Columns.Add("InStock", GetType(Boolean))
' Add sample data to export DataTable
productsTable.Rows.Add(1, "Laptop", 999.99, True)
productsTable.Rows.Add(2, "Mouse", 19.99, True)
productsTable.Rows.Add(3, "Keyboard", 49.99, False)
productsTable.Rows.Add(4, "Monitor", 299.99, True)
productsTable.Rows.Add(5, "Headphones", 79.99, True)
' Add the DataTable table to the DataSet
dataSet.Tables.Add(productsTable)
' Export DataSet to Excel using IronXL
Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook)
' Save the Excel file
workBook.SaveAs("ProductData.xlsx")
' Create a sample DataSet with product information
Dim dataSet As New DataSet("ProductData")
' Create a DataTable object for products, column headers
Dim productsTable As New DataTable("Products")
productsTable.Columns.Add("ProductID", GetType(Integer))
productsTable.Columns.Add("ProductName", GetType(String))
productsTable.Columns.Add("Price", GetType(Decimal))
productsTable.Columns.Add("InStock", GetType(Boolean))
' Add sample data to export DataTable
productsTable.Rows.Add(1, "Laptop", 999.99, True)
productsTable.Rows.Add(2, "Mouse", 19.99, True)
productsTable.Rows.Add(3, "Keyboard", 49.99, False)
productsTable.Rows.Add(4, "Monitor", 299.99, True)
productsTable.Rows.Add(5, "Headphones", 79.99, True)
' Add the DataTable table to the DataSet
dataSet.Tables.Add(productsTable)
' Export DataSet to Excel using IronXL
Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook)
' Save the Excel file
workBook.SaveAs("ProductData.xlsx")
VB .NET

此代码创建一个包含产品信息的数据集,并将其直接转换为 Excel 文件。LoadWorkSheetsFromDataSet 方法会自动为数据集中的每个DataTable创建一个工作表。 生成的 Excel 文件包含从您的 DataTable 结构派生的格式化数据。

输出

如何在 VB.NET 中将数据集转换为 Excel:图 8 - Excel 输出

您也可以操作 Excel 文件并将其保存为不同格式:

' Save as legacy Excel versions format
workBook.SaveAs("ProductData.xls")
' Save as CSV (comma-separated values)
workBook.SaveAsCsv("ProductData.csv")
' Save as TSV (tab-separated values)
workBook.SaveAs("ProductData.tsv")
' Save as legacy Excel versions format
workBook.SaveAs("ProductData.xls")
' Save as CSV (comma-separated values)
workBook.SaveAsCsv("ProductData.csv")
' Save as TSV (tab-separated values)
workBook.SaveAs("ProductData.tsv")
VB .NET

每种格式都有其特定的用途:XLSX 文件格式用于现代 Excel 兼容性,XLS 用于旧系统,CSV/TSV 用于与其他应用程序和数据库之间的通用数据交换。 了解有关在电子表格格式之间转换的更多信息。

如何直接将数据库数据导出为 Excel 文件格式?

现实应用程序通常需要从 SQL 数据库导出数据。 以下是如何查询数据库并将结果导出到 Excel:

Dim connectionString As String = "Data Source=server;Initial Catalog=SampleDB;Integrated Security=True"
Dim query As String = "SELECT OrderID, CustomerName, OrderDate, TotalAmount FROM Orders WHERE OrderDate >= '2024-01-01'"
Dim dataSet As New DataSet()
' Populate DataSet from database
Using connection As New SqlConnection(connectionString)
    Using adapter As New SqlDataAdapter(query, connection)
        adapter.Fill(dataSet, "Orders")
    End Using
End Using
' Create Excel workbook and load data
Dim workBook As WorkBook = WorkBook.Create()
WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook)
' Auto-size columns for better readability
Dim worksheet As WorkSheet = workBook.WorkSheets(0)
For i As Integer = 0 To worksheet.Columns.Count - 1
    worksheet.AutoSizeColumn(i)
Next
' Save with timestamp in filename
Dim fileName As String = $"OrdersExport_{DateTime.Now:yyyyMMdd_HHmmss}.xlsx"
workBook.SaveAs(fileName)
Dim connectionString As String = "Data Source=server;Initial Catalog=SampleDB;Integrated Security=True"
Dim query As String = "SELECT OrderID, CustomerName, OrderDate, TotalAmount FROM Orders WHERE OrderDate >= '2024-01-01'"
Dim dataSet As New DataSet()
' Populate DataSet from database
Using connection As New SqlConnection(connectionString)
    Using adapter As New SqlDataAdapter(query, connection)
        adapter.Fill(dataSet, "Orders")
    End Using
End Using
' Create Excel workbook and load data
Dim workBook As WorkBook = WorkBook.Create()
WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook)
' Auto-size columns for better readability
Dim worksheet As WorkSheet = workBook.WorkSheets(0)
For i As Integer = 0 To worksheet.Columns.Count - 1
    worksheet.AutoSizeColumn(i)
Next
' Save with timestamp in filename
Dim fileName As String = $"OrdersExport_{DateTime.Now:yyyyMMdd_HHmmss}.xlsx"
workBook.SaveAs(fileName)
VB .NET

此示例演示了从数据库查询到 Excel 文件的完整工作流程。SqlDataAdapter 将查询结果填入数据集,然后由 IronXL 将其转换为格式化的 Excel 文件。自动调整大小功能确保所有数据可见,无需手动调整列宽,生成准备分发的专业外观导出。 有关处理较大数据集的信息,请参阅我们关于处理大型 Excel 文件的指南。

输入

如何在 VB.NET 中将数据集转换为 Excel:图 15 - 数据库输入

输出

如何在 VB.NET 中将数据集转换为 Excel:图 10 - Excel 输出

如何在一个 Excel 文件中处理多个数据表?

处理相关数据时,您可能会在一个数据集中拥有多个数据表。 IronXL 无缝处理这一步:

Dim dataSet As New DataSet("CompanyData")
' Create Employees table (dim dt)
Dim employeesTable As New DataTable("Employees")
employeesTable.Columns.Add("EmployeeID", GetType(Integer))
employeesTable.Columns.Add("Name", GetType(String))
employeesTable.Columns.Add("Department", GetType(String))
employeesTable.Rows.Add(1, "John Smith", "Sales")
employeesTable.Rows.Add(2, "Jane Doe", "Marketing")
' Create Departments table
Dim departmentsTable As New DataTable("Departments")
departmentsTable.Columns.Add("DepartmentName", GetType(String))
departmentsTable.Columns.Add("Budget", GetType(Decimal))
departmentsTable.Rows.Add("Sales", 100000)
departmentsTable.Rows.Add("Marketing", 75000)
' Add both tables to DataSet
dataSet.Tables.Add(employeesTable)
dataSet.Tables.Add(departmentsTable)
' Convert to Excel - each DataTable becomes a worksheet
Dim workBook As WorkBook = WorkBook.Create()
WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook)
' Optionally rename worksheets
workBook.WorkSheets(0).Name = "Employee List"
workBook.WorkSheets(1).Name = "Department Budgets"
workBook.SaveAs("CompanyData.xlsx")
Dim dataSet As New DataSet("CompanyData")
' Create Employees table (dim dt)
Dim employeesTable As New DataTable("Employees")
employeesTable.Columns.Add("EmployeeID", GetType(Integer))
employeesTable.Columns.Add("Name", GetType(String))
employeesTable.Columns.Add("Department", GetType(String))
employeesTable.Rows.Add(1, "John Smith", "Sales")
employeesTable.Rows.Add(2, "Jane Doe", "Marketing")
' Create Departments table
Dim departmentsTable As New DataTable("Departments")
departmentsTable.Columns.Add("DepartmentName", GetType(String))
departmentsTable.Columns.Add("Budget", GetType(Decimal))
departmentsTable.Rows.Add("Sales", 100000)
departmentsTable.Rows.Add("Marketing", 75000)
' Add both tables to DataSet
dataSet.Tables.Add(employeesTable)
dataSet.Tables.Add(departmentsTable)
' Convert to Excel - each DataTable becomes a worksheet
Dim workBook As WorkBook = WorkBook.Create()
WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook)
' Optionally rename worksheets
workBook.WorkSheets(0).Name = "Employee List"
workBook.WorkSheets(1).Name = "Department Budgets"
workBook.SaveAs("CompanyData.xlsx")
VB .NET

数据集中的每个数据表都会成为 Excel 文件中的一个单独的工作表,保持数据的逻辑分离。 此方法对于需要不同数据类别的单独工作表的综合报告非常有用,所有数据都在一个文件中。根据Microsoft 关于数据集的文档,这种结构反映了数据库模式的关系性质。

输出

如何在 VB.NET 中将数据集转换为 Excel:图 11 - 使用多个工作表的 Excel 输出 - 员工列表

如何在 VB.NET 中将数据集转换为 Excel:图 12 - Excel 输出 - 部门预算

如何向您的 Excel 导出添加基本格式?

虽然 IronXL 自动处理基本格式,但您可以通过附加样式增强您的Excel 导出

' After loading DataSet into WorkBook
Dim worksheet As WorkSheet = workBook.WorkSheets(0)
' Set header row style
Dim headerRange As Range = worksheet.GetRange("A1:D1")
headerRange.Style.Font.Bold = True
headerRange.Style.BackgroundColor = "#4472C4"
headerRange.Style.Font.Color = "#FFFFFF"
' Format currency columns
For rowIndex As Integer = 1 To worksheet.RowCount - 1
    worksheet($"C{rowIndex + 1}").FormatString = "$#,##0.00"
Next
' Add borders to data range
Dim dataRange As Range = worksheet.GetRange($"A1:D{worksheet.RowCount}")
dataRange.Style.Border.TopBorder.Type = BorderType.Thin
dataRange.Style.Border.BottomBorder.Type = BorderType.Thin
' After loading DataSet into WorkBook
Dim worksheet As WorkSheet = workBook.WorkSheets(0)
' Set header row style
Dim headerRange As Range = worksheet.GetRange("A1:D1")
headerRange.Style.Font.Bold = True
headerRange.Style.BackgroundColor = "#4472C4"
headerRange.Style.Font.Color = "#FFFFFF"
' Format currency columns
For rowIndex As Integer = 1 To worksheet.RowCount - 1
    worksheet($"C{rowIndex + 1}").FormatString = "$#,##0.00"
Next
' Add borders to data range
Dim dataRange As Range = worksheet.GetRange($"A1:D{worksheet.RowCount}")
dataRange.Style.Border.TopBorder.Type = BorderType.Thin
dataRange.Style.Border.BottomBorder.Type = BorderType.Thin
VB .NET

这些格式选项将普通数据导出转换为专业外观的电子表格。 样式功能包括字体属性、颜色、边框和数字格式,允许您创建符合组织品牌或报告标准的导出。 在 IronXL 文档中探索更多单元格样式选项。

输出

如何在 VB.NET 中将数据集转换为 Excel:图 13 - 带有格式的 Excel 输出

开始您的免费试用,体验使用 IronXL 在 VB.NET 中将数据集转换为 Excel 的简单性。

如何在 VB.NET 中将数据集转换为 Excel:图 14 - 许可

结论

使用 IronXL 在 VB.NET 中将数据集转换为 Excel变得非常简单。 该库消除了传统 Interop 方法的复杂性,同时提供了强大的数据导出、格式和多格式支持功能。 无论您是在导出内存数据还是数据库查询结果,IronXL 都能高效处理转换,而无需安装 Excel。

使用 IronXL 进行数据集到 Excel 转换的主要优势包括:

  • 无需 Microsoft Office 依赖
  • 支持多种 Excel 格式(XLSX、XLS、CSV、TSV)
  • 从数据表自动创建工作表
  • 适用于云和容器部署的跨平台兼容性
  • 简单直观的 API,所需代码量极小

要探索其他功能,如图表创建、公式支持和高级格式选项,请访问适合您需求的IronXL 文档

准备好提升您的数据导出能力了吗? 下载 IronXL,其中包含 PDF、条形码、OCR 等库。

常见问题解答

如何在 VB.NET 中将 DataSet 转换为 Excel 文件?

您可以使用 IronXL 高效地在 VB.NET 中将 DataSet 转换为 Excel 文件。它提供了一种不需要 Microsoft Office 或复杂 COM 引用的简单方法。

使用 IronXL 将 DataSet 转换为 Excel 的好处是什么?

IronXL 通过消除对 Microsoft Office 和复杂 COM 引用的需求,简化了 DataSet 转换为 Excel 的过程。它为 VB.NET 开发者提供了一种简化而高效的解决方案。

我需要安装 Microsoft Office 来使用 IronXL 吗?

不,IronXL 独立于 Microsoft Office,因此您无需安装 Office 就能将 DataSet 转换为 Excel 文件。

IronXL 是否与 VB.NET 应用程序兼容?

是的,IronXL 完全兼容 VB.NET 应用程序,便于集成和用于导出 DataSet 到 Excel。

IronXL 可以处理大型 DataSet 的 Excel 转换吗?

IronXL 旨在高效处理大型 DataSet,确保平稳地转换为 Excel 而不影响性能。

使用 IronXL 将 DataSet 转换为 Excel 的步骤是什么?

转换步骤包括将您的 DataSet 加载到 IronXL 中,然后将其保存为 Excel 文件。IronXL 的 API 提供了每个步骤的明确说明和功能。

IronXL 支持导出数据库查询吗?

是的,IronXL 支持导出数据库查询到 Excel,简化了报告生成和数据分析任务。

在 VB.NET 中使用 IronXL 有什么前提条件吗?

除了拥有 VB.NET 开发环境外,没有具体的前提条件。IronXL 不需要像 Microsoft Office 这样的额外安装。

IronXL 如何改善 VB.NET 中的数据备份过程?

IronXL 通过允许 DataSet 易于转换为 Excel,简化了数据备份提供可靠且可访问的存储格式。

是否有使用 IronXL 与 VB.NET 的指南?

是的,IronXL 提供了针对 VB.NET 开发者的详细文档和指南,包括逐步的任务说明,如将 DataSet 转换为 Excel。

Curtis Chau
技术作家

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

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