使用IRONXL

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

已更新 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 框架,包括 Web 應用、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 中創建新項目

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

如何在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 Package Manager 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
VB   C#

上述程式碼從 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 提供無限制的重新分發權利。欲獲取更詳細的定價資訊,您可以訪問 授權頁面.

< 上一頁
如何在C#中將海量數據從DataTable匯出到Excel
下一個 >
如何在 Blazor 中匯出為 CSV

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 1,023,839 查看許可證 >