使用IRONXL

C# 最快的将 DataTable 导出到 Excel 的方法

更新 2024年九月26日
分享:

在处理电子表格时,Microsoft Excel 应用程序是一个流行的电子表格工具,专为以表格格式管理大型数据集而设计。 它提供强大的功能,如复杂计算,通过图表和图形进行数据可视化、数据透视表,并支持通过应用程序的 Visual Basic 进行自动化。(VBA). 其强大的数据分析和可视化工具使Excel成为各行各业的首选。 使用 Excel,您可以轻松创建、编辑、查看和共享文件,简化数据管理任务。

在C#中,ADO.NET库中的DataTable对象表示程序中的表格数据,就像Excel工作表一样。 它将数据组织成行和列,方便操作和导出。 就像 Excel 一样,DataTable 支持过滤、排序和格式选项,使其成为在 C# 中管理数据范围的首选工具。 然而,DataTable 在运行时创建,并且在应用程序关闭时其数据会丢失,除非将其导出为更永久的格式,例如 Excel 文件或 CSV 文件。

今天,我们将探讨如何在 C# 中创建一个 DataTable,并使用 IronXL 这个强大的 .NET Excel 库将其数据导出到 Excel 文档中。

IronXL:一个 .NET Excel 库

IronXL是一个C# .NET库,它简化了创建Excel文件的过程。 使用IronXL,您可以创建新的电子表格、编辑现有的电子表格、使用Excel公式、设置电子表格单元格的样式等等。 其丰富的功能使以编程方式处理Excel文件变得轻而易举,最重要的是,IronXL无需Microsoft Office Interop即可工作。这意味着无需安装Microsoft Office或任何其他特殊依赖项。

使用IronXL,您可以将数据保存或导出为不同的格式,如XLS和XLSX、CSV数据和TSV、JSON、XML和HTML、二进制和字节数组。 它还拥有强大的工作簿安全功能,例如添加权限和密码,并允许您编辑工作簿元数据。

将数据从 Datatable 导出到 Excel 文件的步骤

先决条件

要在C#中使用IronXL将数据从数据表导出到Excel文件,我们需要在本地计算机上安装以下组件。 让我们一个一个地来看。

  1. Visual Studio - Visual Studio 是用于 C# 编程的集成开发环境 (IDE),必须安装。 您可以从以下地址下载并安装最新版本Visual Studio 网站.

    • 一旦设置好IDE,需要创建一个控制台应用程序/Windows表单,这将有助于将数据表导出到Excel。 以下截图显示了如何创建项目。

      创建项目

    现在,选择您的项目类型。 在我们的示例中,我们将创建一个控制台应用程序。

    控制台应用程序

    为您的项目命名并选择保存位置。

    命名项目

    最后,选择您的.NET Framework,然后点击“创建”。

    .NET Framework

    在最后一个截图中点击创建后,名为“DemoApp”的项目被创建。

  2. IronXL 库 - 必须在 Visual Studio 项目中下载并安装 IronXL 库。 有多种方法可以做到这一点。

    • 使用 Visual Studio - 它提供 NuGet 包管理器来安装 IronXL。 您可以通过“工具”菜单或“解决方案资源管理器”访问它。 以下截图有助于安装IronXL。 首先,导航至顶部栏的“工具”,或者在解决方案资源管理器中右键单击。

      解决方案资源管理器

      工具 - NuGet 包管理器

    进入“管理解决方案的NuGet包”,然后搜索IronXL。 然后,您只需点击“安装”,IronXL库就会被添加到您的项目中。

    浏览 IronXL

    • 开发人员命令提示符 - 可以通过Visual Studio工具菜单或从Visual Studio文件夹中打开开发人员命令提示符。 键入以下命令以下载并安装IronXL到您的项目中:
PM > Install-Package IronXL.Excel
PM > Install-Package IronXL.Excel
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'PM > Install-Package IronXL.Excel
VB   C#
  1. 添加必要的命名空间 - 要创建数据表并使用IronXL,必须在Program.cs文件的顶部引用这两者。
using IronXL; //add reference...
   using System.Data;
using IronXL; //add reference...
   using System.Data;
Imports IronXL 'add reference...
   Imports System.Data
VB   C#

一旦所有先决条件都满足,就可以开始将数据从数据表导出到Excel工作表。

在C#中创建一个DataTable

以下代码创建了一个具有两个列标题和多行的新数据表:

//new datatable dt...
DataTable dt = new DataTable();
//add column names...
dt.Columns.Add("Animal");
dt.Columns.Add("Sound");
dt.Rows.Add("Lion", "Roars"); // first row...
dt.Rows.Add("Dog", "Barks");
dt.Rows.Add("Cat", "Meows");
dt.Rows.Add("Goat", "Bleats");
dt.Rows.Add("Wolf", "Howls");
dt.Rows.Add("Cheetah", "Purrs");
//new datatable dt...
DataTable dt = new DataTable();
//add column names...
dt.Columns.Add("Animal");
dt.Columns.Add("Sound");
dt.Rows.Add("Lion", "Roars"); // first row...
dt.Rows.Add("Dog", "Barks");
dt.Rows.Add("Cat", "Meows");
dt.Rows.Add("Goat", "Bleats");
dt.Rows.Add("Wolf", "Howls");
dt.Rows.Add("Cheetah", "Purrs");
'new datatable dt...
Dim dt As New DataTable()
'add column names...
dt.Columns.Add("Animal")
dt.Columns.Add("Sound")
dt.Rows.Add("Lion", "Roars") ' first row...
dt.Rows.Add("Dog", "Barks")
dt.Rows.Add("Cat", "Meows")
dt.Rows.Add("Goat", "Bleats")
dt.Rows.Add("Wolf", "Howls")
dt.Rows.Add("Cheetah", "Purrs")
VB   C#

首先,我们创建一个名为“dt”的新DataTable。 然后,使用 Columns.Add 我们可以通过名称向数据表添加指定数量的列,在我们的示例中,我们有两列,分别称为“Animal”和“Sound”。 然后我们使用 Rows.Add 添加新行,将每行的内容放在括号内。 内容被逗号分隔,每个字符串由列分隔。

使用IronXL在C#中创建Excel文件

使用IronXL从头创建Excel文件类型是一个两步过程,在C#中实现非常简单。 IronXL首先创建一个Excel工作簿,然后帮助向其添加工作表。 以下示例代码演示了如何创建一个工作簿以及工作表:

//create new workbook...
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet ws = wb.DefaultWorkSheet;
//create new workbook...
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet ws = wb.DefaultWorkSheet;
'create new workbook...
Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim ws As WorkSheet = wb.DefaultWorkSheet
VB   C#

使用IronXL将DataTable的数据导出到Excel工作表中

利用IronXL将数值添加到工作表能够简化整个过程,这可以通过极少的代码来完成。 在这里我们将学习如何从数据表导出数据在前一部分创建的内容导入到新创建的Excel工作表中。 让我们一步一步地查看代码。

向 Excel 工作表添加列标题

ws["A1"].Value = dt.Columns[0].ToString();
ws["B1"].Value = dt.Columns[1].ToString();
int rowCount = 2;
ws["A1"].Value = dt.Columns[0].ToString();
ws["B1"].Value = dt.Columns[1].ToString();
int rowCount = 2;
ws("A1").Value = dt.Columns(0).ToString()
ws("B1").Value = dt.Columns(1).ToString()
Dim rowCount As Integer = 2
VB   C#

在上述代码中,Excel表格的"A1"列被赋予数据表中索引0的第一列的值,而下一个Excel列"B1"的值则被赋予数据表中索引1的第二列的值。 rowCount 变量被设置为值 2,以从第二行开始读取数据表中的行,这确保我们不计入标题行。

向 Excel 工作表添加行

以下代码将从数据表中读取每一行并将其分配到 Excel 文件的新行中:

foreach (DataRow row in dt.Rows)
{
    ws["A" + (rowCount)].Value = row[0].ToString();
    ws["B" + (rowCount)].Value = row[1].ToString();
    rowCount++;
}
foreach (DataRow row in dt.Rows)
{
    ws["A" + (rowCount)].Value = row[0].ToString();
    ws["B" + (rowCount)].Value = row[1].ToString();
    rowCount++;
}
For Each row As DataRow In dt.Rows
	ws("A" & (rowCount)).Value = row(0).ToString()
	ws("B" & (rowCount)).Value = row(1).ToString()
	rowCount += 1
Next row
VB   C#

rowCount 变量每次递增,以便从中读取新行。数据表到 Excel工作表单元格。

保存 Excel 文件

最后,使用SaveAs保存Excel文件()** 方法。

wb.SaveAs("DataTable_to_Excel_IronXL.xlsx");
wb.SaveAs("DataTable_to_Excel_IronXL.xlsx");
wb.SaveAs("DataTable_to_Excel_IronXL.xlsx")
VB   C#

该文件也可以另存为其他格式,例如CSV。(逗号分隔值)JSON 和 XML。

wb.SaveAsCsv("DataTable_to_Excel_IronXL.csv");
wb.SaveAsJson("DataTable_to_Excel_IronXL.json");
wb.SaveAsXml("DataTable_to_Excel_IronXL.xml");
wb.SaveAsCsv("DataTable_to_Excel_IronXL.csv");
wb.SaveAsJson("DataTable_to_Excel_IronXL.json");
wb.SaveAsXml("DataTable_to_Excel_IronXL.xml");
wb.SaveAsCsv("DataTable_to_Excel_IronXL.csv")
wb.SaveAsJson("DataTable_to_Excel_IronXL.json")
wb.SaveAsXml("DataTable_to_Excel_IronXL.xml")
VB   C#

您还可以使用自定义分隔符保存它。

输出

文件的最终输出如下所示:

数据表到Excel输出

摘要

在本文中,我们演示了如何使用C#创建包含列和行的DataTable,然后使用IronXL生成带有默认工作表的Excel工作簿。 然后,我们成功地将DataTable中的表格数据导出到Excel文件中,并以.xlsx格式保存。

IronXL是一个用户友好的C#库,允许开发人员无缝地处理Excel文件,即使没有安装MS Excel。 它支持从各种格式(如 CSV 文件)导出数据,以便进一步操作和计算。

要了解有关IronXL及其强大功能集的更多信息,请务必查看其广泛的文献资料. 想自己试试吗? IronXL还提供一个免费试用可以完全访问所有功能,因此您可以立即开始探索这个强大的库如何改善您的电子表格项目。!

< 前一页
如何在VB.NET中将数据表导出到Excel
下一步 >
如何在C#中读取Excel文件

准备开始了吗? 版本: 2024.11 刚刚发布

免费NuGet下载 总下载量: 1,094,134 查看许可证 >