使用IRONXL

如何在C#中将Excel转换为Datagridview

更新 2024年三月31日
分享:

本博客将对比如何在.NET技术中使用最流行的库之一 IronXL 以编程方式与 CSV 格式或标准 Excel 格式的 Microsoft Excel 文档进行交互。

IronXL 图书馆功能

使用 C# 中的 IronXL 库,您可以轻松读取 Microsoft Excel 文档并将其转换为 CSV 文件。IronXL 是一个独立的 .NET 软件库,可以读取各种电子表格格式,而无需安装 Microsoft Excel 或依赖 Microsoft Office Interop Excel。

IronXL 是领先的 C# Excel 电子表格库之一,与 .NET Core 和 .NET Framework 兼容。它支持各种 .NET 框架,包括 Web 应用程序、Windows 窗体应用程序和控制台应用程序。使用 IronXL 可以快速、直接地读取 Excel 文件。它支持多种 Excel 文件格式,包括 XLSX、XLS、CSV、TSV、XLST、XLSM 等。你可以导入、编辑、导出数据表、导出数据集,并执行许多其他操作。还可以导出和保存不同扩展名的文件。

有了 IronXL 直观的 C# API,你可以在 .NET 环境中毫不费力地读取、修改和创建 Excel 电子表格文件。它为 .NET Core、.NET Framework、Xamarin、Mobile、Linux、macOS 和 Azure 提供全面支持。

IronXL 可以像 Microsoft Excel 一样执行计算,并支持多种列数据格式,如文本、整数、公式、日期、货币和百分比。

要了解更多信息,请点击 IronXL 网站.

在 Visual Studio 中创建新项目

使用 IronXL 框架之前,必须在 Visual Studio 中创建一个 .NET 项目。任何版本的 Visual Studio 都可以使用,但建议使用最新版本。您可以根据需要创建各种项目模板或类似 Windows 窗体的应用程序。为了简化操作,本教程将使用 Windows 窗体应用程序。

如何在 C# 中将 Excel 转换为 Datagridview,图 1:在 Visual Studio 中创建新项目

在 Visual Studio 中创建一个新项目

选择项目模板后,提供项目的名称和位置。

如何在 C# 中将 Excel 转换为 Datagridview,图 2:配置项目

配置项目

接下来,选择以下结构。本项目将使用 .NET Framework 4.7。

如何在 C# 中将 Excel 转换为 Datagridview,图 3:.NET 框架选择

.NET框架选择

生成项目文件后,可在设计器视图中打开 Form1.cs 文件,插入程序代码、设计界面并构建/运行程序。然后,您需要下载解决方案所需的 IronXL 库。您可以在软件包管理器中使用以下代码下载软件包:

Install-Package IronXL.Excel

如何在 C# 中将 Excel 转换为 Datagridview,图 4:在软件包管理器控制台中安装 IronXL 软件包

在软件包管理器控制台安装 IronXL 软件包

您也可以使用 NuGet 软件包管理器搜索并下载 "IronXL "软件包。NuGet 软件包管理器为管理项目中的依赖关系提供了一种便捷的方式。

如何在 C# 中将 Excel 转换为 Datagridview,图 5:在 NuGet 软件包管理器用户界面中搜索并安装 IronXL 软件包

在 NuGet 软件包管理器用户界面中搜索并安装 IronXL 软件包

对于该表单,在表单上放置了一个 DataGridView 控件,以便将必要的 Excel 文件加载到 DataGridView 控件中。

从 Excel 文件加载数据

IronXL 是一个功能强大的 Excel 库,只需几行代码即可读取 Excel 文件。下面是一个示例代码片段,演示了如何将 Excel 数据导入 "DataGridView":

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
namespace DataTableWindowsForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string ImportFilePath=string.Empty;

            openFileDialog1.Filter = "Excel (*.xlsx)
*.xlsx";
            DialogResult Result= openFileDialog1.ShowDialog(); 

            if (Result == DialogResult.OK)
            {
                ImportFilePath = openFileDialog1.FileName;
            }
            if(ImportFilePath!=string.Empty)
            {
                var exceldoc=IronXL.WorkBook.LoadExcel(ImportFilePath);
                var Edataset = exceldoc.ToDataSet().Tables [0];
                for (int i = 0; i < Edataset.Columns.Count; i++)
                {
                    Edataset.Columns [i].ColumnName = Edataset.Rows [0].ItemArray [i].ToString();
                    //dataGridView1.Rows [i].HeaderCell.Value = Edataset.Rows [0].ItemArray [i];
                }
                dataGridView1.DataSource = Edataset;
                dataGridView1.Rows.RemoveAt(0);
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
namespace DataTableWindowsForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string ImportFilePath=string.Empty;

            openFileDialog1.Filter = "Excel (*.xlsx)
*.xlsx";
            DialogResult Result= openFileDialog1.ShowDialog(); 

            if (Result == DialogResult.OK)
            {
                ImportFilePath = openFileDialog1.FileName;
            }
            if(ImportFilePath!=string.Empty)
            {
                var exceldoc=IronXL.WorkBook.LoadExcel(ImportFilePath);
                var Edataset = exceldoc.ToDataSet().Tables [0];
                for (int i = 0; i < Edataset.Columns.Count; i++)
                {
                    Edataset.Columns [i].ColumnName = Edataset.Rows [0].ItemArray [i].ToString();
                    //dataGridView1.Rows [i].HeaderCell.Value = Edataset.Rows [0].ItemArray [i];
                }
                dataGridView1.DataSource = Edataset;
                dataGridView1.Rows.RemoveAt(0);
            }
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports System.Windows.Forms
Imports System.Windows.Forms.VisualStyles.VisualStyleElement.Window
Namespace DataTableWindowsForm
	Partial Public Class Form1
		Inherits Form

		Public Sub New()
			InitializeComponent()
		End Sub

		Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
			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 ImportFilePath<>String.Empty Then
				Dim exceldoc=IronXL.WorkBook.LoadExcel(ImportFilePath)
				Dim Edataset = exceldoc.ToDataSet().Tables (0)
				For i As Integer = 0 To Edataset.Columns.Count - 1
					Edataset.Columns (i).ColumnName = Edataset.Rows (0).ItemArray (i).ToString()
					'dataGridView1.Rows [i].HeaderCell.Value = Edataset.Rows [0].ItemArray [i];
				Next i
				dataGridView1.DataSource = Edataset
				dataGridView1.Rows.RemoveAt(0)
			End If
		End Sub
	End Class
End Namespace
VB   C#

上述代码从 Excel 中导入数据。为了提供更多背景信息,假设我们正在设计一个 Windows 窗体应用程序,其中包含一个 DataGridView 控件和一个按钮。按钮将打开一个对话框,从特定位置浏览 Excel 文件。我们添加了一段自定义代码,以过滤并只显示数量有限的具有特定扩展名的文件。

如何在 C# 中将 Excel 转换为 Datagridview,图 6:打开选择 Excel 文件的对话框

打开对话框选择 Excel 文件

然后 加载 Excel 方法用于从 Excel 文件加载数据。该方法允许从文件名、字节或数据流等不同来源加载数据。如果 Excel 文件受密码保护,我们还可以将密码作为参数传递。

Excel 详细信息加载到 IronXL 对象后,IronXL 的 至数据集 方法用于将 Excel 工作表数据转换为数据集。Excel 文件中的每个工作表都将转换成数据集中的一个单独表格。

然后,将数据集中所需的表格加载到 DataGridView 中。为此,要将 DataGridViewDataSource 属性设置为从 IronXL 新创建的 DataTable 对象。这一步可将数据从 Excel 文件导入到 DataGridView 中。

如何在 C# 中将 Excel 转换为 Datagridview,图 7:显示 Excel 文件中的数据

显示 Excel 文件中的数据

此外,Excel 标头名称也分配给了 DataGridView 标头。此外,我们还删除了 DataTable 中包含 Excel 列作为行数据的任何附加信息列。这样可确保 DataGridView 中只显示相关数据。

有关使用 IronXL 的更多教程,请点击此处 操作指南.

结论

IronXL 是一款非常受欢迎的 Excel 工具,它不依赖外部库。它是一个独立的解决方案,无需安装 Microsoft Excel。它与各种平台兼容。

有了 IronXL,你可以通过编程完成与 Microsoft Excel 文档相关的各种操作。您可以执行对字符串或数字排序、修剪和添加数据、查找和替换值等任务、 合并和取消合并单元格保存文件等。它还允许你验证电子表格数据和 定义单元格数据类型.此外,IronXL 还支持阅读和 编写 CSV 文件.

IronXL 的购买价格为 $749。客户还可选择支付会员年费,以获得更新和产品支持。IronXL 还提供不受限制的再分发权,但需额外收费。要获取更详细的定价信息,请访问 许可页面.

< 前一页
如何在C#中将大量数据从DataTable导出到Excel
下一步 >
如何在Blazor中导出到CSV

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

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