使用IRONXL

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

雷根·彭
雷根·彭
2023年五月23日
更新 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 Framework,包括 Web 应用程序、Windows 窗体应用程序和控制台应用程序。 使用 IronXL.Excel 可以快速、直接地读取 Excel 文件。 它支持多种 Excel 文件格式,包括 XLSX、XLS、CSV、TSV、XLST、XLSM 等。 您可以导入、编辑、导出数据表、导出数据集并执行许多其他操作。 还可以导出和保存不同扩展名的文件。

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

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

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

在 Visual Studio 中创建新项目

在使用 IronXL for .NET Framework 之前,必须在 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 Framework

.NET Framework 选择

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

Install-Package IronXL.Excel

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

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

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

如何在 C# 中将 Excel 转换为 Datagridview,图 5:在 NuGet 包管理器 UI 中搜索并安装 IronXL 包

在 NuGet 包管理器 UI 中搜索并安装 IronXL 包

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

从 Excel 文件加载数据

IronXL.Excel 是一个功能强大的 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
$vbLabelText   $csharpLabel

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

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

打开对话框以选择 Excel 文件

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

一旦 Excel 详细信息加载到 IronXL 对象中,就使用 ToDataSet 方法将 Excel 表数据转换为数据集。 Excel 文件中的每一张表都将转换成数据集中的一个单独表格。

然后,将所需的表从数据集中加载到DataGridView。 为此,DataGridViewDataSource属性被设置为从IronXL新创建的DataTable对象。 此步骤允许从 Excel 文件填充数据到DataGridView

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

显示 Excel 文件中的数据

此外,Excel 标题名称也分配给DataGridView标题。 此外,我们从包含 Excel 列作为行数据的DataTable中移除了所有额外的信息列。 这确保只有相关的数据会显示在DataGridView中。

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

结论

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

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

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

雷根·彭
软件工程师
Regan毕业于雷丁大学,拥有电子工程学士学位。在加入Iron Software之前,他的前工作职位要求他专注于单一任务;他在Iron Software最喜欢的是能进行多种工作,无论是增加销售价值、技术支持、产品开发还是营销。他喜欢了解开发人员如何使用Iron Software的库,并利用这些知识不断改进文档和开发产品。
< 前一页
如何在C#中将大量数据从DataTable导出到Excel
下一步 >
如何在Blazor中导出到CSV