使用IRONXL

如何在C#中將Excel轉換為Datagridview

里根普恩
里根普恩
2023年5月23日
已更新 2024年3月31日
分享:

這篇博客將比較和對比如何在 .NET 技術中以編程方式與 Microsoft Excel 文件進行互動,無論是 CSV 格式還是標準 Excel 格式,使用其中最流行的庫之一,IronXL。

IronXL 資料庫功能

使用 IronXL 庫在 C# 中,您可以輕鬆讀取並將 Microsoft Excel 文件轉換為 CSV 文件。 IronXL 是一個獨立的 .NET 軟體庫,可以讀取多種試算表格式,無需安裝 Microsoft Excel 或依賴 Microsoft Office Interop Excel。

IronXL 是領先的 C# Excel 試算表庫之一,兼容 .NET Core 和 .NET Framework。 它支援多種 .NET Frameworks,包括網路應用程式、Windows Forms 應用程式和控制台應用程式。 使用 IronXL 讀取 Excel 文件既快速又簡單。 它支援多種 Excel 檔案格式,包括 XLSX、XLS、CSV、TSV、XLST、XLSM 等。 您可以匯入、編輯、匯出資料表,匯出資料集,並執行許多其他操作。 可以匯出和儲存具有不同副檔名的檔案。

使用 IronXL 直觀的 C# API,您可以在 .NET 環境中輕鬆讀取、修改和創建 Excel 試算表文件。 它為 .NET Core、.NET Framework、Xamarin、移動設備、Linux、macOS 和 Azure 提供全面支持。

IronXL 可以像 Microsoft Excel 一樣執行計算,並支援多種欄位資料格式,例如文字、整數、公式、日期、貨幣和百分比。

如需了解更多,請點擊IronXL網站

在 Visual Studio 中建立新專案

在使用 IronXL 框架之前,必須在 Visual Studio 中創建一個 .NET 專案。 任何版本的 Visual Studio 都可以使用,但建議使用最新版本。 您可以根據需求創建各種專案範本或類似 Windows Forms 的應用程式。 本教程將使用 Windows Forms 應用程式來簡化流程。

如何在 C# 中將 Excel 轉換為 Datagridview,圖 1:在 Visual Studio 中創建新專案

在 Visual Studio 中創建一個新專案

選擇項目模板後,提供項目的名稱和位置。

如何將 Excel 轉換為 Datagridview in C#, 圖 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 資料匯入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 Forms 應用程式。 該按鈕將打開一個對話框,以從特定位置瀏覽 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 工具,不依賴於外部庫。 這是一個獨立的解決方案,無需安裝 Microsoft Excel。 它兼容多種平台。

使用 IronXL,您可以以程式化方式完成與 Microsoft Excel 文件相關的各種操作。 您可以執行諸如排序字串或數字、修剪和添加數據、查找和替換值、合併和取消合併儲存格、保存文件等任務。 它還允許您驗證試算表資料並定義儲存格資料類型。 此外,IronXL 支援讀取和寫入 CSV 檔案

IronXL 可供購買,價格為 $749。 顧客也可以選擇支付年度會費以獲得更新和產品支援。 IronXL 提供無限制重新分發權,但需支付額外費用。 若要獲取更詳細的定價資訊,您可以造訪授權頁面

里根普恩
軟體工程師
Regan 畢業於雷丁大學,擁有電子工程學士學位。在加入 Iron Software 之前,他的工作角色讓他專注於單一任務;而他在 Iron Software 工作中最喜歡的是他所能承擔的工作範圍,無論是增加銷售價值、技術支持、產品開發或市場營銷。他喜歡了解開發人員如何使用 Iron Software 庫,並利用這些知識不斷改進文檔和開發產品。
< 上一頁
如何在C#中將海量數據從DataTable匯出到Excel
下一個 >
如何在 Blazor 中匯出為 CSV