使用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 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 中創建一個新專案

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

如何在C#中將Excel轉換成Datagridview,圖2:配置專案

配置專案

接下來,選擇以下結構。 此專案將使用 .NET Framework 4.7。

如何在C#中將Excel轉換為Datagridview,圖3:.NET框架選擇

.NET Framework 選擇

生成專案檔案後,您可以在設計檢視中開啟 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 標題。 此外,我們從 DataTable 中移除了包含 Excel 列作為行資料的任何其他資訊列。 這確保 DataGridView 中只顯示相關數據。

如需更多關於使用 IronXL 的教程,請點擊這個操作指南.

結論

IronXL 是一個非常受歡迎的 Excel 工具,不依賴於外部庫。 這是一個獨立的解決方案,無需安裝 Microsoft Excel。 它兼容多種平台。

使用 IronXL,您可以以程式化方式完成與 Microsoft Excel 文件相關的各種操作。 您可以執行的任務包括排序字串或數字、修剪和新增資料、查找和替換值,合併和取消合併儲存格儲存檔案等。 它也允許您驗證電子表格數據並定義單元格數據類型. 此外,IronXL 支持讀取和撰寫 CSV 檔案.

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

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

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

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