跳至页脚内容
使用 IRONXL
如何将数据表转换为Excel文件

C# 中 DataTable 到 Excel(代码示例教程)

以编程方式更改Excel电子表格可能会遇到两个主要问题。 首先,在处理电子表格时,用户必须保持界面和文档结构的一致性,这并不总是简单的。 其次,在特定情况下(尤其是涉及复杂计算时)并不总是清楚哪些代码可以工作。 以编程方式创建Excel文件存在众多困难。 程序员必须首先将Excel文档中的数据转换为可读格式,然后解析数据并解析回去,这更加困难。 我已找到解决这个问题的方法。 我会教你如何使用IronXL .NET Excel库创建Excel文件并将DataTable以编程方式导出到Excel工作表中。 让我们开始吧:

IronXL功能

  • IronXL可在各种操作系统上运行,包括Windows、LinuxmacOS
  • 几乎所有的.NET框架都得到IronXL的支持,包括控制台、Windows窗体应用程序和Web应用程序
  • IronXL使阅读Excel文件变得简单易行。
  • 我们可以使用IronXL加载、编辑、导出数据表、导出数据集,并读取Excel文件格式,如XLSX文件、XLS、CSV、TSV、XLST、XLSM文件等。
  • IronXL允许我们以多种扩展名保存和导出文件,包括XLS、CSV、TSV、JSON、XLSX等。
  • Excel公式可以由IronXL创建。
  • IronXL支持文本、数字、公式、日期、货币、百分比以及其他Excel单元格数据格式
  • 它还提供多种排序选项,如范围、列和行等。
  • IronXL中的单元格样式包括字体、大小、背景模式、边框和对齐方式等。
  • 我们可以使用IronXL读取和导出Excel文件中的数据。
  • IronXL不需要在服务器中安装Excel或Interop。 IronXL的API比Microsoft Office、Interop和Excel更快、更易于使用。

1 在Visual Studio中创建新项目

要使用IronXL库,我们必须在Visual Studio中创建一个.NET项目。 您可以使用任何版本的Visual Studio,但建议使用最新版本。 您可以根据需要创建类似Windows窗体或不同项目模板的应用程序。 为了简单起见,我将使用控制台应用程序作为本教程。

如何在C#中将大量数据从DataTable导出到Excel,图1:在Visual Studio中创建新项目UI 在Visual Studio中创建新项目UI

接下来,输入项目名称和项目位置。

如何在C#中将大量数据从DataTable导出到Excel,图2:创建新项目的配置步骤 创建新项目的配置步骤

接下来,选择下面的框架。 在这个项目中,我们将使用.NET Core 6。

如何在C#中将大量数据从DataTable导出到Excel,图3:.Net框架选择UI .Net框架选择UI

应用程序创建解决方案后,它将打开program.cs文件,您可以在其中输入代码并构建/运行应用程序。

如何在C#中将大量数据从DataTable导出到Excel,图4:新项目中的空program.cs文件 新项目中的空program.cs文件

接下来,我们可以添加库来测试代码。

2 安装IronXL库

IronXL库可通过四种方式下载和安装。

这些是:

  • 使用Visual Studio
  • 使用Visual Studio命令行。
  • 从NuGet网站直接下载。
  • 直接从IronXL网站下载。

2.1 使用Visual Studio

我们可以使用NuGet包管理器安装IronXL库。 您必须首先打开NuGet包管理器,然后在浏览选项卡中搜索IronXL。 从搜索结果中选择IronXL并安装。 此后,我们的项目将准备好使用IronXL库。

下面的截图展示了我们如何在Visual Studio中打开NuGet包管理器。

如何在C#中将大量数据从DataTable导出到Excel,图5:导航到Visual Studio中的NuGet包管理器 在 Visual Studio 中导航到 NuGet 包管理器

IronXL在搜索结果中:

如何在C#中将大量数据从DataTable导出到Excel,图6:搜索IronXL库 搜索IronXL库

2.2 使用Visual Studio命令行

许多人喜欢使用控制台来执行操作。 因此,我们也可以通过控制台来安装它。 按照以下步骤通过命令行安装IronXL。

  • 在Visual Studio中,转到工具-> NuGet包管理器 -> 包管理器控制台
  • 在包管理器控制台选项卡中输入以下行:
Install-Package IronXL.Excel

现在包将下载/安装到当前项目,并可以使用了。

如何在C#中将大量数据从DataTable导出到Excel,图7:通过控制台安装IronXL包 通过控制台安装IronXL包

2.3 直接从NuGet网站下载

第三种方法是直接从网站下载NuGet包。

  • 导航到NuGet官方网站的IronXL包页面
  • 从右手边菜单中选择下载包选项。
  • 双击下载后的包。 它将自动安装。
  • 接下来,重新加载解决方案并开始在项目中使用它。

2.4 直接从IronXL网站下载

点击链接从网站上直接下载最新包。下载完成后,按照以下步骤将包添加到项目中。

  • 从解决方案窗口中右键点击项目。
  • 然后,选择参考选项并浏览到下载参考的位置。
  • 接下来,点击确定以添加参考。

3 使用IronXL将DataTable导出为Excel文件

IronXL允许我们简单地分步骤将DataTable导出为Excel文件。

首先,我们需要如下面的代码截图中那样包含IronXL的命名空间。 一旦添加完毕,我们就可以在代码中使用IronXL的类和方法。

如何在C#中将大量数据从DataTable导出到Excel,图8:在使用库之前包含IronXL的命名空间 在使用库之前包含IronXL的命名空间

IronXL允许我们创建Excel文件并将其转换为工作簿对象。 在将它们转换为对象后,我们可以执行各种操作。 在下面的示例代码中,我们将一个DataTable转换为Excel工作表,然后我们可以创建Excel文件。

using System;
using System.Data;
using IronXL;

public class ExcelExporter
{
    /// <summary>
    /// Exports a DataTable to an Excel file using IronXL.
    /// </summary>
    /// <param name="filePath">The file path where the Excel file will be saved.</param>
    public static void ExportToExcel(string filePath)
    {
        // Creating a DataTable with a single column
        DataTable table = new DataTable();
        table.Columns.Add("DataSet_Animal", typeof(string));

        // Adding some rows to the DataTable
        table.Rows.Add("Lion");
        table.Rows.Add("Tiger");
        table.Rows.Add("Cat");
        table.Rows.Add("Goat");
        table.Rows.Add("Panther");
        table.Rows.Add("Fox");
        table.Rows.Add("Cheetah");

        // Creating a new Excel Workbook
        WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);

        // Accessing the default worksheet
        WorkSheet ws = wb.DefaultWorkSheet;

        // Iterating through the DataTable rows
        int rowCount = 1;
        foreach (DataRow row in table.Rows)
        {
            // Adding each DataRow's first column value to the corresponding cell in the worksheet
            ws["A" + rowCount].Value = row[0].ToString();
            rowCount++;
        }

        // Saving the workbook to a CSV file at specified file path with ";" as delimiter
        wb.SaveAsCsv(filePath, ";");
    }
}
using System;
using System.Data;
using IronXL;

public class ExcelExporter
{
    /// <summary>
    /// Exports a DataTable to an Excel file using IronXL.
    /// </summary>
    /// <param name="filePath">The file path where the Excel file will be saved.</param>
    public static void ExportToExcel(string filePath)
    {
        // Creating a DataTable with a single column
        DataTable table = new DataTable();
        table.Columns.Add("DataSet_Animal", typeof(string));

        // Adding some rows to the DataTable
        table.Rows.Add("Lion");
        table.Rows.Add("Tiger");
        table.Rows.Add("Cat");
        table.Rows.Add("Goat");
        table.Rows.Add("Panther");
        table.Rows.Add("Fox");
        table.Rows.Add("Cheetah");

        // Creating a new Excel Workbook
        WorkBook wb = WorkBook.Create(ExcelFileFormat.XLS);

        // Accessing the default worksheet
        WorkSheet ws = wb.DefaultWorkSheet;

        // Iterating through the DataTable rows
        int rowCount = 1;
        foreach (DataRow row in table.Rows)
        {
            // Adding each DataRow's first column value to the corresponding cell in the worksheet
            ws["A" + rowCount].Value = row[0].ToString();
            rowCount++;
        }

        // Saving the workbook to a CSV file at specified file path with ";" as delimiter
        wb.SaveAsCsv(filePath, ";");
    }
}
Imports System
Imports System.Data
Imports IronXL

Public Class ExcelExporter
	''' <summary>
	''' Exports a DataTable to an Excel file using IronXL.
	''' </summary>
	''' <param name="filePath">The file path where the Excel file will be saved.</param>
	Public Shared Sub ExportToExcel(ByVal filePath As String)
		' Creating a DataTable with a single column
		Dim table As New DataTable()
		table.Columns.Add("DataSet_Animal", GetType(String))

		' Adding some rows to the DataTable
		table.Rows.Add("Lion")
		table.Rows.Add("Tiger")
		table.Rows.Add("Cat")
		table.Rows.Add("Goat")
		table.Rows.Add("Panther")
		table.Rows.Add("Fox")
		table.Rows.Add("Cheetah")

		' Creating a new Excel Workbook
		Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLS)

		' Accessing the default worksheet
		Dim ws As WorkSheet = wb.DefaultWorkSheet

		' Iterating through the DataTable rows
		Dim rowCount As Integer = 1
		For Each row As DataRow In table.Rows
			' Adding each DataRow's first column value to the corresponding cell in the worksheet
			ws("A" & rowCount).Value = row(0).ToString()
			rowCount += 1
		Next row

		' Saving the workbook to a CSV file at specified file path with ";" as delimiter
		wb.SaveAsCsv(filePath, ";")
	End Sub
End Class
$vbLabelText   $csharpLabel

在以上代码中,我们将DataTable导出为Excel文件。首先,我们创建DataTable,然后创建列标题。 创建好列后,我们一个接一个地添加行。 添加完行后,我们创建WorkBook对象。 通过使用该对象,我们可以将数据添加到Excel工作表中,然后将数据保存到指定位置。 我们创建了WorkSheet对象以允许创建工作表,然后我们可以将其添加到WorkBook对象中。

我们使用foreach循环来逐个读取DataTable值,然后将该值添加到工作表中。 将所有值添加到工作表后,我们使用名为SaveAsCsv的方法将其保存到CSV文件中 — 我们需要将分隔符和包含位置的文件名作为参数传递。 分隔符是可选参数,如果不需要可以忽略它。

如何在C#中将大量数据从DataTable导出到Excel,图9:在Visual Studio中完成的代码 在Visual Studio中完成的代码

以上是我们在.NET Core 6中使用的完整代码截图。

Result:

如何在C#中将大量数据从DataTable导出到Excel,图10:在Microsoft Excel中打开文件时的结果 在Microsoft Excel中打开文件时的结果

以上是执行代码示例的结果。 在截图中,DataTable中可用的所有数据已经一个接一个地添加到新创建的Excel表中。

4 结论

IronXL是最常用的Excel库之一。 它不依赖于任何其他第三方库。 它是独立的,不需要安装MS Excel。 它可在多个平台上运行。 IronXL的起始价格为$799。 此外,它提供一年的产品支持和更新选项。 IronXL提供免费的版税覆盖,可额外费用。有关价格详情,请访问我们的许可页面

常见问题解答

如何在 C# 中将 DataTable 导出到 Excel 文件?

您可以使用 IronXL 的 WorkBook 和 WorkSheet 类将 DataTable 导出到 Excel 文件。创建一个 DataTable,遍历其行,并使用 IronXL 的 API 用数据填充 Excel 文件。

使用 IronXL 进行 Excel 操作相比 Interop 有哪些好处?

IronXL 比 Microsoft Interop 更快且更高效,不需要安装 Microsoft Excel,并支持多种平台和文件格式。

IronXL支持哪些Excel文件格式?

IronXL 支持各种 Excel 文件格式,包括 XLSX、XLS、CSV、TSV、XLST 和 XLSM,允许多种文件操作。

IronXL 可以在导出数据时处理 Excel 公式吗?

是的,IronXL 可以处理 Excel 公式,确保从 DataTable 导出到 Excel 文件时复杂的计算被保留。

哪些操作系统与 IronXL 兼容?

IronXL 兼容多种操作系统,包括 Windows、Linux 和 macOS,允许跨平台开发。

是否必须安装Microsoft Excel才能使用IronXL?

不需要,IronXL 独立于 Microsoft Excel 运作,允许您处理 Excel 文件而无需在服务器上安装 Excel。

如何在 C# 项目中安装 IronXL?

您可以通过 Visual Studio 中的 NuGet 包管理器、使用命令行或直接从 NuGet 或 IronXL 网站下载来安装 IronXL。

IronXL 支持哪些 .NET 框架?

IronXL 支持多种 .NET 框架,包括控制台应用程序、Windows 窗体应用程序和 Web 应用程序,使其适用于不同类型的项目。

IronXL 是否支持 Excel 文件中的单元格样式和格式?

是的,IronXL 提供多种单元格样式和格式选项,例如设置字体样式、颜色和边框,以增强 Excel 文件的外观。

IronXL 如何简化编程创建 Excel 文件的过程?

IronXL 通过提供易用的 API 来创建、修改和导出 Excel 文件,简化了这一过程,而无需维护其他方法所需的接口和结构。

Curtis Chau
技术作家

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

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