与其他组件比较

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

发布 2023年五月16日
分享:

您是否正在寻找一个 Excel 库,用于在 C# 中将 Excel 数据读入 "DataTable"?

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

在本文中,我们将讨论和比较两个不同的 Excel 库,它们都是 .NET Core 的 C# 库,可提供将 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 IronXL 是一个功能强大、用途广泛的库,它使开发人员能够在其 .NET 应用程序中毫不费力地读取、写入和处理 Excel 文件。IronXL 利用其直观而全面的 API 简化了处理电子表格的复杂过程,使开发人员能够无缝提取数据、执行计算、创建图表并轻松生成报表。无论是自动执行数据导入/导出任务、执行数据分析,还是创建动态 Excel 模板,IronXL 都能提供强大的解决方案,为开发人员节省宝贵的时间和精力,同时确保 Excel 数据处理的准确性和可靠性。IronXL 具有无缝集成、丰富的文档和广泛的功能,是开发人员寻求可靠高效的工具来应对 .NET 框架中与 Excel 文件操作相关的挑战时的首选。

3.安装 EPPlus 库

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

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

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

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

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

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

4.安装 IronXL

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

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

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

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

现在,IronXL 可以使用了。

5.使用 EPPlus 库向数据表读取 Excel 文件和数据

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

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

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

以下是将 Excel 文件作为 "数据表 "读取的代码。


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

    class Program
    {
        static void Main(string [] args)
        {
            var path = @"sample.xlsx";
            var data = ExcelDataToDataTable(path, "Table");
            foreach (DataRow row in data.Rows)
            {
                foreach (var wsrow in row.ItemArray)
                {
                    Console.Write(wsrow);
                }
                Console.WriteLine();
            }

        }
        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 Exists");

            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
            var xlPackage = new ExcelPackage(fi);
            // get the first worksheet in the workbook
            var worksheet = xlPackage.Workbook.Worksheets [sheetName];

            dt = worksheet.Cells [1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
            {
                c.FirstRowIsColumnNames = true;
            });

            return dt;
        }
    }

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

    class Program
    {
        static void Main(string [] args)
        {
            var path = @"sample.xlsx";
            var data = ExcelDataToDataTable(path, "Table");
            foreach (DataRow row in data.Rows)
            {
                foreach (var wsrow in row.ItemArray)
                {
                    Console.Write(wsrow);
                }
                Console.WriteLine();
            }

        }
        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 Exists");

            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
            var xlPackage = new ExcelPackage(fi);
            // get the first worksheet in the workbook
            var worksheet = xlPackage.Workbook.Worksheets [sheetName];

            dt = worksheet.Cells [1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column].ToDataTable(c =>
            {
                c.FirstRowIsColumnNames = true;
            });

            return dt;
        }
    }
Imports OfficeOpenXml
	Imports System
	Imports System.Data
	Imports System.IO

	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Dim path = "sample.xlsx"
			Dim data = ExcelDataToDataTable(path, "Table")
			For Each row As DataRow In data.Rows
				For Each wsrow In row.ItemArray
					Console.Write(wsrow)
				Next wsrow
				Console.WriteLine()
			Next row

		End Sub
		Public Shared Function ExcelDataToDataTable(ByVal filePath As String, ByVal sheetName As String, Optional ByVal hasHeader As Boolean = True) As DataTable
			Dim dt As New DataTable()
			Dim fi = New FileInfo(filePath)
			' Check if the file exists
			If Not fi.Exists Then
				Throw New Exception("File " & filePath & " Does Not Exists")
			End If

			ExcelPackage.LicenseContext = LicenseContext.NonCommercial
			Dim xlPackage = New ExcelPackage(fi)
			' get the first worksheet in the workbook
			Dim worksheet = xlPackage.Workbook.Worksheets (sheetName)

			dt = worksheet.Cells (1, 1, worksheet.Dimension.End.Row, worksheet.Dimension.End.Column).ToDataTable(Sub(c)
				c.FirstRowIsColumnNames = True
			End Sub)

			Return dt
		End Function
	End Class
VB   C#

上述代码调用一个方法,该方法接收文件路径和工作表名称等输入参数,并返回一个 DataTable 作为输出。

5.1.输出

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

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

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

下面的代码示例使用 IronXL 实现了与上述代码相同的功能。


    using IronXL;
    using System;
    using System.Data;

    WorkBook workBook = WorkBook.Load("sample.xlsx");

    WorkSheet workSheet = workBook.DefaultWorkSheet;

    DataTable Table = workSheet.ToDataTable(true);

    foreach (DataRow row in Table.Rows)
    {
        for (int row = 0; row  < dataTable.Columns.Count; row ++)
        {
            Console.Write(row [row ] + " ");
        }
        Console.WriteLine();
    }

    using IronXL;
    using System;
    using System.Data;

    WorkBook workBook = WorkBook.Load("sample.xlsx");

    WorkSheet workSheet = workBook.DefaultWorkSheet;

    DataTable Table = workSheet.ToDataTable(true);

    foreach (DataRow row in Table.Rows)
    {
        for (int row = 0; row  < dataTable.Columns.Count; row ++)
        {
            Console.Write(row [row ] + " ");
        }
        Console.WriteLine();
    }
Imports IronXL
	Imports System
	Imports System.Data

	Private workBook As WorkBook = WorkBook.Load("sample.xlsx")

	Private workSheet As WorkSheet = workBook.DefaultWorkSheet

	Private Table As DataTable = workSheet.ToDataTable(True)

	For Each row As DataRow In Table.Rows
		For row As Integer = 0 To dataTable.Columns.Count - 1
			Console.Write(row (row) & " ")
		Next row
		Console.WriteLine()
	Next row
VB   C#

在上述代码示例中,我们只需加载 Excel 文件,然后使用 workSheet.ToDataTable 将其转换为 DataTable 即可。(真)方法。

6.1 输出

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

7.结论

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

EPPlus 是一个开放源代码库,为以编程方式生成、读取和修改 Excel 电子表格提供了直接的应用程序接口。它支持 .xls 和 .xlsx 两种格式,并提供高效的性能和内存管理。

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

通过比较 IronXL 和 EPPlus 的代码示例,我们发现 EPPlus 的代码相当冗长、复杂且难以阅读。而 IronXL 的代码则非常简单易读。IronXL 使用默认工作表,但在 EPPlus 中,您需要给出工作表的名称,否则会出错。

总之,在操作 Excel 文件和读取 Excel 文件为 "数据表 "时,我推荐使用 IronXL 而不是 EPPlus。此外,在使用简单代码处理 Excel 文件方面,IronXL 比 EPPlus 提供了更多的功能。有关 IronXL 的更多教程,请访问以下网站 链接.

< 前一页
压缩档案 C#(开发者教程)
下一步 >
IronXL和FastExcel for .NET的比较

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

免费NuGet下载 总下载量: 988,189 查看许可证 >