IRONSOFTWAREHOME
与其他组件比较

EPPlus 读取 Excel 到 DataTable C#(IronXL 教程)

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

在C#中寻找一个Excel库,将Excel数据读取到DataTable中?

在C#中将Excel文件读取到DataTable中在各个行业和领域有多个实际应用,例如数据分析和报告、导入数据到数据库、数据迁移、数据验证和清理、与其他系统集成、自动化和批处理。

在本文中,我们将讨论和比较两个针对.NET Core的不同Excel库,这些库提供了将Excel数据和Excel文件读取到DataTable中这一功能。 库包括

  1. EPPlus
  2. IronXL

1. EPPlus库

EPPlus是一个功能强大的开源库,用于在 C# 中创建和操作 Excel 文件。 它提供了一个简单直观的 API,允许开发人员以编程方式生成、读取和修改 Excel 电子表格,而无需在服务器或客户端计算机上安装 Microsoft Office 或 Excel。 使用 EPPlus,您可以轻松创建工作表、添加数据、应用格式、创建图表以及对 Excel 文件执行其他操作。 它同时支持较旧的 .xls 格式和较新的 .xlsx 格式,并提供高效的性能和内存管理。 无论您需要生成动态报告、导入/导出数据,还是自动化 Excel 相关任务,EPPlus 都提供了一套全面的功能和特性,以简化您在 C# 应用程序中对 Excel 文件的处理。

2. IronXL

IronXL是一个功能强大且用途广泛的库,它使开发人员能够在 .NET 应用程序中轻松读取、写入和操作 Excel 文件。 IronXL 凭借其直观且全面的 API,简化了原本复杂的电子表格操作流程,使开发人员能够轻松地无缝提取数据、执行计算、创建图表和生成报告。 无论是自动化数据导入/导出任务、执行数据分析,还是创建动态 Excel 模板,IronXL 都能提供强大的解决方案,为开发人员节省宝贵的时间和精力,同时确保处理 Excel 数据的准确性和可靠性。 IronXL 凭借其无缝集成、丰富的文档和广泛的功能,成为开发人员寻求可靠高效的工具来克服 .NET Framework中 Excel 文件操作相关挑战的首选。

3. 安装 EPPlus 库

要将 EPPlus 库安装到您的 C# 项目中,首先需要在 Visual Studio 中创建一个新的基于控制台的项目。 之后,您可以使用 NuGet 包管理器轻松安装它。

创建新项目后,转到"工具",将鼠标悬停在 NuGet 程序包管理器上,然后选择"管理解决方案的 NuGet 程序包"。

将出现一个新窗口。 在这个新窗口中,转到"浏览"选项并搜索"EPPlus"。 将会显示软件包列表,您应该选择最新的稳定版本。 然后,点击右侧的"安装"按钮来安装 EPPlus 库。

就这样,EPPlus 将被添加到您的项目中。

4. 安装 IronXL

安装 IronXL 的方法有很多,但在本节中,我们将只讨论使用 NuGet 包管理器安装 IronXL。

就像第 3 部分一样,创建一个新项目,然后转到"工具",打开解决方案的 NuGet 包管理器。

在新窗口中,于搜索栏中输入关键词"IronXL"。 将会出现一个列表,您可以选择要安装的 IronXL 软件包。 然后,点击"安装"按钮,将 IronXL 安装到您的项目中。

IronXL现在可以使用了。

5. 使用 EPPlus 库读取 Excel 文件并将数据导入 DataTable

在本节中,我们将使用C# EPPlus包Excel库来检查将Excel读取为DataTable的代码。

我们需要一个示例Excel文件作为DataTable来读取。 为此,我们将生成一个示例 Excel 文件。

下面是将Excel文件读取为DataTable的代码。

using OfficeOpenXml;
using System;
using System.Data;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var path = @"sample.xlsx"; // Specify the path to your Excel file
        var data = ExcelDataToDataTable(path, "Table");

        // Iterate through each row in the DataTable and print its contents
        foreach (DataRow row in data.Rows)
        {
            foreach (var wsrow in row.ItemArray)
            {
                Console.Write(wsrow + " ");
            }
            Console.WriteLine();
        }
    }

    /// <summary>
    /// Converts Excel sheet data to a DataTable.
    /// </summary>
    /// <param name="filePath">The path to the Excel file.</param>
    /// <param name="sheetName">The name of the worksheet to read from.</param>
    /// <param name="hasHeader">Indicates whether the Excel sheet has a header row.</param>
    /// <returns>DataTable containing Excel data.</returns>
    public static DataTable ExcelDataToDataTable(string filePath, string sheetName, bool hasHeader = true)
    {
        DataTable dt = new DataTable();
        var fi = new FileInfo(filePath);

        // Check if the file exists
        if (!fi.Exists)
            throw new Exception("File " + filePath + " does not exist.");

        // Set the license context for EPPlus
        ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

        // Load the Excel file into an EPPlus ExcelPackage
        using (var xlPackage = new ExcelPackage(fi))
        {
            // Get the specified worksheet from the workbook
            var worksheet = xlPackage.Workbook.Worksheets[sheetName];

            // Convert the worksheet to a DataTable, optionally using the first row as column names
            dt = worksheet.Cells[1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
            {
                c.FirstRowIsColumnNames = hasHeader;
            });
        }

        return dt;
    }
}

上述代码定义了一个方法,该方法接受如文件路径和表单名称等输入参数,并返回一个DataTable作为输出。 它还遍历了DataTable的每一行,并打印数据。

5.1. 输出

输出结果将为打印到控制台的 Excel 文件内容。

6. 使用 IronXL 将 Excel 文件读取为数据表

使用IronXL转换Excel表并将其读取为DataTable非常简单,只需几行代码。 此外,我们将使用之前的 Excel 文件作为输入。

以下代码示例与上述代码的功能相同,但使用的是 IronXL。

using IronXL;
using System;
using System.Data;

class Program
{
    static void Main(string[] args)
    {
        // Load the Excel file into an IronXL WorkBook
        WorkBook workBook = WorkBook.Load("sample.xlsx");

        // Get the default worksheet from the workbook
        WorkSheet workSheet = workBook.DefaultWorkSheet;

        // Convert the worksheet to a DataTable, specifying that the first row contains column names
        DataTable table = workSheet.ToDataTable(true);

        // Iterate through each row in the DataTable and print its contents
        foreach (DataRow row in table.Rows)
        {
            foreach (var cell in row.ItemArray)
            {
                Console.Write(cell + " ");
            }
            Console.WriteLine();
        }
    }
}

在上面的代码示例中,我们只是加载Excel文件并使用DataTable

6.1 输出

输出结果将为打印到控制台的 Excel 文件内容。

7. 结论

总之,在读取Excel文件并将其转换为C#中的DataTable时,EPPlus和IronXL都是优秀的库,提供强大的功能并简化了流程。

EPPlus是一个开源库,它提供了一个简单的 API,用于以编程方式生成、读取和修改 Excel 电子表格。 它支持 .xls 和 .xlsx 格式,并提供高效的性能和内存管理。

另一方面, IronXL是一个功能强大的库,使开发人员能够在 .NET 应用程序中轻松处理 Excel 文件。 它提供直观的 API 和全面的功能,用于提取数据、执行计算、创建图表和生成报告。 IronXL 简化了复杂的 Excel 文件处理任务,例如数据导入/导出、数据分析和动态模板创建。

通过比较 IronXL 和 EPPlus 的代码示例,我们发现 EPPlus 代码相当冗长、复杂且难以阅读。 另一方面,IronXL 代码非常简单易读。 IronXL 使用默认工作表,但在 EPPlus 中,您需要指定工作表的名称; 否则,你会收到错误提示。

总而言之,我会推荐IronXL而不是EPPlus来操作和读取Excel文件为DataTable。 此外,IronXL 在用简单代码处理 Excel 文件方面提供了比 EPPlus 多得多的功能。 有关 IronXL 的更多教程,请访问以下链接

请注意: EPPlus 是其各自所有者的注册商标。 本网站与EPPlus没有任何关联,也未获得EPPlus的认可或赞助。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映撰写时公开可用的信息。
Curtis Chau
技术作家

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

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户