如何在 C# 中无需 oledb 将 Excel 转换为 DataTable
Microsoft Excel 是微软创建的一个强大的电子表格程序。 它是一个广泛使用的数据组织、分析和可视化工具。 它是微软Office套件的一部分。 由于其多种功能,Excel是一个多功能工具,可以被专业人士、个人、组织和大学使用。
Excel在包括金融、会计、商业分析、数据分析、研究、教育等在内的广泛领域中被广泛使用。 由于其多功能性和广泛的功能集,它是组织、评估和展示数据的首选工具,无论是在个人还是职业环境中。 在本文中,我们将在C#中将Excel转换为DataTable,而不使用OLEDB连接。
如何在C#中将Excel转换为DataTable而不使用OLEDB
- 创建一个新的Visual Studio项目。
- 安装所需的库。
- 将Excel文件加载到一个对象中。
- 使用特定方法将Excel表格数据转换为DataTable。
- 按需使用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并选择"新建项目"。然后,选择"Windows窗体应用程序"。

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

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

接下来,添加必要的库并测试代码。
安装IronXL库
要安装IronXL库,请打开NuGet Package Manager Console并输入以下命令:

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

将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
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' 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在上述代码中
- Windows Form加载Excel文件并将其转换为一个新的DataTable。
- 使用打开文件对话框让用户选择一个Excel文件。
- 使用IronXL的
WorkBook.Load()方法将Excel文件加载到Workbook对象中。 - 使用索引或名称选择第一个工作表。
- 使用
ToDataTable方法将工作表数据转换为DataTable。 - 将填充的DataTable设置为Windows Form上的DataGridView控件的数据源。
在底部,一个表单和一个按钮将Excel文件加载到应用程序中。

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

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

了解更多关于使用IronXL与DataTables的信息。
结论
IronXL是最常用的Excel附加组件之一,不依赖于任何额外的外部库。 安装Microsoft Excel是不必要的,因为它是一个自包含的程序。 它可以通过多种方式操控Excel文件。 相比之下,Interop库需要其他库来解析文件和编辑Word文档。
IronXL提供了一个全面的解决方案,用于通过任何编程过程使用Microsoft Excel文档,包括诸如计算、排序、合并和文件存储等操作。 它促进了更高效地处理Excel数据、读取和写入文件。
最初,IronXL的定价为$999。 用户可以通过支付一年会员费来获得软件更新和支持。 IronXL还提供防止非法再分发的保护功能,需支付一定费用。 点击这里尝试IronXL的免费试用以获取更详细的定价信息。 访问Iron Software首页以获取关于其他Iron Software产品的更多信息。
Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。
