跳至页脚内容
使用 IRONXL
如何用 IronXL 在 C# 中无需 oledb 将 Excel 转换为 DataTable

如何在 C# 中无需 oledb 将 Excel 转换为 DataTable

Microsoft Excel 是微软创建的一个强大的电子表格程序。 它是一个广泛使用的数据组织、分析和可视化工具。 它是微软Office套件的一部分。 由于其多种功能,Excel是一个多功能工具,可以被专业人士、个人、组织和大学使用。

Excel在包括金融、会计、商业分析、数据分析、研究、教育等在内的广泛领域中被广泛使用。 由于其多功能性和广泛的功能集,它是组织、评估和展示数据的首选工具,无论是在个人还是职业环境中。 在本文中,我们将在C#中将Excel转换为DataTable,而不使用OLEDB连接。

如何在C#中将Excel转换为DataTable而不使用OLEDB

  1. 创建一个新的Visual Studio项目。
  2. 安装所需的库。
  3. 将Excel文件加载到一个对象中。
  4. 使用特定方法将Excel表格数据转换为DataTable。
  5. 按需使用DataTable。

IronXL库

在.NET程序中处理Excel文件的一种替代方法是IronXL。 虽然微软Interop需要使用Interop程序集来连接Excel,但IronXL提供了一种更简单、更高效、更强大的方法,在.NET环境中以编程方式操控Excel文件。

以下是使用IronXL的一些优点:

  • 性能和资源经济性: IronXL在性能和资源效率方面优于微软Interop,因为它不依赖于PC上安装的Excel程序。
  • 可读性和简便性: IronXL提供了一个更简单的API,使得读取、写入和操作Excel文件更容易,而没有微软Interop的缺点。
  • 兼容性和依赖性: IronXL通过不需要在PC上安装微软Excel,消除了与不同Office或Excel版本的依赖性和潜在的兼容性问题。
  • 平台独立性: 虽然微软Interop更紧密地链接到某些微软Office版本,IronXL在更广泛的设置和平台中提供了更多的灵活性和简单的部署。

由于IronXL速度更快、使用更方便且需要安装的第三方软件更少,它对于需要以编程方式处理Excel文件的.NET开发人员而言通常是更可取的选择。 然而,项目的细节、现有基础设施以及用户对每个库的熟悉程度等因素可能会影响他们的选择。

在选择这些解决方案时,请始终考虑应用程序的需求。 有关IronXL库的更多信息,请访问此网站

在 Visual Studio 中创建新项目

要打开Visual Studio,请从菜单中单击File并选择“New Project”,然后选择“Windows Forms Application”。

如何在C#中将Excel转换为DataTable而不使用OLEDB:图1

选择文件位置后,在适当的文本区域中输入项目名称。 接下来,单击“Create”按钮并选择所需的.NET Framework,如下示例中所示。

如何在C#中将Excel转换为DataTable而不使用OLEDB:图2

选择的应用程序类型将决定Visual Studio项目的结构。 要添加代码,您可以进入Program.cs文件,并使用控制台、Windows或Web应用程序构建或运行应用程序。

如何在C#中将Excel转换为DataTable而不使用OLEDB:图3

接下来,添加必要的库并测试代码。

安装IronXL库

要安装IronXL库,请打开NuGet Package Manager Console并输入以下命令:

Install-Package IronXL.Excel

如何在C#中将Excel转换为DataTable而不使用OLEDB:图4

或者,您可以使用NuGet Package Manager来搜索“IronXL”包。这将显示与IronXL相关的NuGet包列表,您可以从中选择您需要的那个包。

如何在C#中将Excel转换为DataTable而不使用OLEDB:图5

将Excel文件转换为数据表

以下代码演示了在安装包后如何读取Excel文件并将其转换为DataTable

// Necessary namespaces for IronXL and application namespaces
using IronXL;
using System;
using System.Data;
using System.Windows.Forms;

namespace DataTableWindowsForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Exports data from an Excel file specified by the user through a file dialog.
        /// </summary>
        /// <param name="filename">The name of the file to export data from.</param>
        private void ExportData(string filename)
        {
            string importFilePath = string.Empty;
            openFileDialog1.Filter = "Excel (*.xlsx)|*.xlsx";
            DialogResult result = openFileDialog1.ShowDialog();

            if (result == DialogResult.OK)
            {
                importFilePath = openFileDialog1.FileName;
            }

            if (!string.IsNullOrEmpty(importFilePath))
            {
                // Load the Excel document
                var excelDoc = WorkBook.Load(importFilePath);
                // Select the first worksheet
                var worksheet = excelDoc.WorkSheets[0];
                // Convert worksheet to a DataTable
                DataTable dt = worksheet.ToDataTable();
                // Bind DataTable to the DataGridView
                dataGridView1.DataSource = dt;
            }
        }
    }
}
// Necessary namespaces for IronXL and application namespaces
using IronXL;
using System;
using System.Data;
using System.Windows.Forms;

namespace DataTableWindowsForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Exports data from an Excel file specified by the user through a file dialog.
        /// </summary>
        /// <param name="filename">The name of the file to export data from.</param>
        private void ExportData(string filename)
        {
            string importFilePath = string.Empty;
            openFileDialog1.Filter = "Excel (*.xlsx)|*.xlsx";
            DialogResult result = openFileDialog1.ShowDialog();

            if (result == DialogResult.OK)
            {
                importFilePath = openFileDialog1.FileName;
            }

            if (!string.IsNullOrEmpty(importFilePath))
            {
                // Load the Excel document
                var excelDoc = WorkBook.Load(importFilePath);
                // Select the first worksheet
                var worksheet = excelDoc.WorkSheets[0];
                // Convert worksheet to a DataTable
                DataTable dt = worksheet.ToDataTable();
                // Bind DataTable to the DataGridView
                dataGridView1.DataSource = dt;
            }
        }
    }
}
' Necessary namespaces for IronXL and application namespaces
Imports IronXL
Imports System
Imports System.Data
Imports System.Windows.Forms

Namespace DataTableWindowsForm
	Partial Public Class Form1
		Inherits Form

		Public Sub New()
			InitializeComponent()
		End Sub

		''' <summary>
		''' Exports data from an Excel file specified by the user through a file dialog.
		''' </summary>
		''' <param name="filename">The name of the file to export data from.</param>
		Private Sub ExportData(ByVal filename As String)
			Dim importFilePath As String = String.Empty
			openFileDialog1.Filter = "Excel (*.xlsx)|*.xlsx"
			Dim result As DialogResult = openFileDialog1.ShowDialog()

			If result = System.Windows.Forms.DialogResult.OK Then
				importFilePath = openFileDialog1.FileName
			End If

			If Not String.IsNullOrEmpty(importFilePath) Then
				' Load the Excel document
				Dim excelDoc = WorkBook.Load(importFilePath)
				' Select the first worksheet
				Dim worksheet = excelDoc.WorkSheets(0)
				' Convert worksheet to a DataTable
				Dim dt As DataTable = worksheet.ToDataTable()
				' Bind DataTable to the DataGridView
				dataGridView1.DataSource = dt
			End If
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

在上述代码中

  • Windows Form加载Excel文件并将其转换为一个新的DataTable。
  • 使用打开文件对话框让用户选择一个Excel文件。
  • 使用IronXL的WorkBook.Load()方法将Excel文件加载到Workbook对象中。
  • 使用索引或名称选择第一个工作表。
  • 使用ToDataTable方法将工作表数据转换为DataTable。
  • 将填充的DataTable设置为Windows Form上的DataGridView控件的数据源。

在底部,一个表单和一个按钮将Excel文件加载到应用程序中。

如何在C#中将Excel转换为DataTable而不使用OLEDB:图6

当用户点击“Load Excel”按钮时,它将提示一个对话框,允许用户选择一个文件。

如何在C#中将Excel转换为DataTable而不使用OLEDB:图7

然后它将处理选定的文件,将其转换为DataTable,并加载到DataGridView中。

如何在C#中将Excel转换为DataTable而不使用OLEDB:图8

了解更多关于使用IronXL与DataTables的信息。

结论

IronXL是最常用的Excel附加组件之一,不依赖于任何额外的外部库。 安装Microsoft Excel是不必要的,因为它是一个自包含的程序。 它可以通过多种方式操控Excel文件。 相比之下,Interop库需要其他库来解析文件和编辑Word文档。

IronXL提供了一个全面的解决方案,用于通过任何编程过程使用Microsoft Excel文档,包括诸如计算、排序、合并和文件存储等操作。 它促进了更高效地处理Excel数据、读取和写入文件。

起初,IronXL的价格为$799。 用户可以通过支付一年会员费来获得软件更新和支持。 IronXL还提供防止非法再分发的保护功能,需支付一定费用。 点击这里尝试IronXL的免费试用以获取更详细的定价信息。 Visit the Iron Software home page for further information on other Iron software products.

常见问题解答

如何在C#中不使用OLEDB将Excel数据转换为DataTable?

要在C#中不使用OLEDB将Excel数据转换为DataTable,可以使用IronXL库。首先,设置一个新的Visual Studio项目并安装IronXL。使用WorkBook.Load()方法加载Excel文件,选择工作表,然后使用ToDataTable方法转换数据。

与Microsoft Interop相比,使用IronXL有什么优点?

IronXL提供了更好的性能,资源效率高,并简化了Excel文件操作过程。它不需要安装Microsoft Excel,因此避免了与不同Office版本的兼容性问题。

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

您可以通过在Visual Studio中打开NuGet包管理器控制台并运行命令Install-Package IronXL来在您的C#项目中安装IronXL。或者,您可以在NuGet包管理器中搜索IronXL并直接安装。

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

不,使用IronXL不需要安装Microsoft Excel。此库独立于Excel运行,消除了任何依赖性或兼容性问题。

使用IronXL将Excel转换为DataTable有什么好处?

使用IronXL将Excel转换为DataTable提供了出色的性能、使用方便,并且不需要额外的软件安装。这种方法允许在.NET应用程序中高效地操作Excel文件。

IronXL能够跨不同平台处理Excel文件吗?

是的,IronXL是平台无关的,可以在不同环境中处理Excel文件,无需特定版本的Microsoft Excel。

在购买之前有办法试用IronXL吗?

是的,IronXL提供了一个免费试用版,允许用户在购买前探索其功能。您可以从IronXL网站获取更多信息并下载试用版。

什么类型的项目最能从使用IronXL中获益?

涉及Excel数据操作的项目,例如数据分析、商业智能应用程序和任何需要处理Excel文件的.NET应用程序,都会从使用IronXL中大大受益。

IronXL如何以编程方式管理Excel文件操作?

IronXL允许开发人员通过其直观的API以编程方式加载、读取和操作Excel文件,而无需依赖Excel的安装组件,这使其成为.NET应用程序的高效工具。

Curtis Chau
技术作家

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

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