跳至頁尾內容
USING IRONXL
如何在 C# 中將 Excel 轉換為 DataTable 而不使用 oledb | IronXL

如何在 C# 中不使用 oledb 將 Excel 轉換為 DataTable

Microsoft Excel 是由Microsoft建立的強大試算表程式。 它是一個廣泛使用的工具,用於資料組織、分析和視覺化。 它是Microsoft Office套件的一部分。 由於其各種特性,Excel 是一個多功能的工具,可以由專業人士、個人、組織和大學使用。

Excel在包括金融、會計、商業分析、資料分析、研究、教育等各種行業中被廣泛使用。 由於其多功能性和豐富的功能集,它是組織、評估和呈現資料的首選工具,無論是個人還是專業環境。 在本文中,我們將在C#中將Excel轉換為DataTable,不需要OLEDB連接。

如何在C#中不使用OLEDB將Excel轉換為DataTable

  1. 建立一個新的Visual Studio專案。
  2. 安裝所需的程式庫。
  3. 將Excel文件載入到物件中。
  4. 使用特定方法將Excel頁面資料轉換為DataTable。
  5. 根據需要使用DataTable。

IronXL程式庫

在.NET程式中處理Excel文件的另一個選擇是IronXL。 雖然Microsoft Interop需要使用Interop組件來與Excel連接,但IronXL提供了一種更簡單、更高效且更強大的方式來在.NET環境中以程式方式操作Excel文件。

以下是使用IronXL的一些優點:

  • 效能和資源經濟: IronXL在效能和資源效耗方面優於Microsoft Interop,因為它不依賴於電腦上安裝的Excel程式。
  • 可讀性和簡單性: IronXL提供了一個更簡單的API,使得讀取、寫入和操作Excel文件更容易,沒有Microsoft Interop的缺點。
  • 相容性和依賴性: IronXL透過不需要在電腦上安裝Microsoft Excel,消除了不同Office或Excel版本的依賴和潛在的相容性問題。
  • 平台獨立性: 雖然Microsoft Interop與某些Microsoft Office版本更緊密相連,但IronXL在更廣泛的設置和平台中提供了更多的靈活性和部署的簡便性。

由於IronXL更快、更易於使用且需要安裝更少的第三方軟體,因此對於需要以程式方式處理Excel文件的.NET開發者來說,它是經常的首選。 然而,專案的具體情況、既有基礎設施和使用者對每個程式庫的熟悉程度等因素可能會影響其選擇。

選擇這些解決方案時,始終要考慮應用程式的需求。 如需有關IronXL程式庫的更多資訊,請存取此網站

在Visual Studio中建立新專案

要打開Visual Studio,請從選單中點擊File並選擇"New Project"。然後,選擇"Windows Forms Application"。

如何在C#中不使用OLEDB將Excel轉換為DataTable:圖1

選擇文件位置後,在適當的文字區域中輸入專案名稱。 接下來,點擊"Create"按鈕並選擇所需的.NET Framework,如下圖所示。

如何在C#中不使用OLEDB將Excel轉換為DataTable:圖2

選擇的應用程式型別將決定Visual Studio專案的結構。 要新增程式碼,您可以進入Program.cs文件,並使用控制台、Windows或網頁應用程式建構或運行應用程式。

如何在C#中不使用OLEDB將Excel轉換為DataTable:圖3

接下來,新增必要的程式庫並測試程式碼。

安裝IronXL程式庫

要安裝IronXL程式庫,請打開NuGet套件管理器控制台並輸入以下命令:

Install-Package IronXL.Excel

如何在C#中不使用OLEDB將Excel轉換為DataTable:圖4

或者,您可以使用NuGet套件管理器搜索"IronXL"套件。這將顯示與IronXL相關的NuGet套件列表,您可以從中選擇所需的套件。

如何在C#中不使用OLEDB將Excel轉換為DataTable:圖5

將Excel文件轉換為資料表

以下程式碼展示了如何在安裝套件後讀取Excel文件並將其轉換為DataTable

// Necessary namespaces for IronXL and application namespaces
using IronXL;
using System;
using System.Data;
using System.Windows.Forms;

namespace DataTableWindowsForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Exports data from an Excel file specified by the user through a file dialog.
        /// </summary>
        /// <param name="filename">The name of the file to export data from.</param>
        private void ExportData(string filename)
        {
            string importFilePath = string.Empty;
            openFileDialog1.Filter = "Excel (*.xlsx)|*.xlsx";
            DialogResult result = openFileDialog1.ShowDialog();

            if (result == DialogResult.OK)
            {
                importFilePath = openFileDialog1.FileName;
            }

            if (!string.IsNullOrEmpty(importFilePath))
            {
                // Load the Excel document
                var excelDoc = WorkBook.Load(importFilePath);
                // Select the first worksheet
                var worksheet = excelDoc.WorkSheets[0];
                // Convert worksheet to a DataTable
                DataTable dt = worksheet.ToDataTable();
                // Bind DataTable to the DataGridView
                dataGridView1.DataSource = dt;
            }
        }
    }
}
// Necessary namespaces for IronXL and application namespaces
using IronXL;
using System;
using System.Data;
using System.Windows.Forms;

namespace DataTableWindowsForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Exports data from an Excel file specified by the user through a file dialog.
        /// </summary>
        /// <param name="filename">The name of the file to export data from.</param>
        private void ExportData(string filename)
        {
            string importFilePath = string.Empty;
            openFileDialog1.Filter = "Excel (*.xlsx)|*.xlsx";
            DialogResult result = openFileDialog1.ShowDialog();

            if (result == DialogResult.OK)
            {
                importFilePath = openFileDialog1.FileName;
            }

            if (!string.IsNullOrEmpty(importFilePath))
            {
                // Load the Excel document
                var excelDoc = WorkBook.Load(importFilePath);
                // Select the first worksheet
                var worksheet = excelDoc.WorkSheets[0];
                // Convert worksheet to a DataTable
                DataTable dt = worksheet.ToDataTable();
                // Bind DataTable to the DataGridView
                dataGridView1.DataSource = dt;
            }
        }
    }
}
' Necessary namespaces for IronXL and application namespaces
Imports IronXL
Imports System
Imports System.Data
Imports System.Windows.Forms

Namespace DataTableWindowsForm
	Partial Public Class Form1
		Inherits Form

		Public Sub New()
			InitializeComponent()
		End Sub

		''' <summary>
		''' Exports data from an Excel file specified by the user through a file dialog.
		''' </summary>
		''' <param name="filename">The name of the file to export data from.</param>
		Private Sub ExportData(ByVal filename As String)
			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 Not String.IsNullOrEmpty(importFilePath) Then
				' Load the Excel document
				Dim excelDoc = WorkBook.Load(importFilePath)
				' Select the first worksheet
				Dim worksheet = excelDoc.WorkSheets(0)
				' Convert worksheet to a DataTable
				Dim dt As DataTable = worksheet.ToDataTable()
				' Bind DataTable to the DataGridView
				dataGridView1.DataSource = dt
			End If
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

在上面的程式碼中:

  • Windows窗體載入Excel文件並將其轉換為一個新的DataTable。
  • 它使用一個打開文件對話框讓使用者選擇一個Excel文件。
  • 使用IronXL的WorkBook.Load()方法將Excel文件載入到Workbook物件中。
  • 使用索引或名稱選擇第一個工作表。
  • 使用ToDataTable方法將工作表資料轉換為DataTable。
  • 填充的DataTable被設置為Windows窗體中DataGridView控制項的資料源。

在底部,一個窗體和一個按鈕將Excel文件載入到應用程式中。

如何在C#中不使用OLEDB將Excel轉換為DataTable:圖6

當使用者點擊"Load Excel"按鈕時,它將提示一個對話框,允許使用者選擇文件。

如何在C#中不使用OLEDB將Excel轉換為DataTable:圖7

然後它會處理選擇的文件,將其轉換為DataTable,並載入到DataGridView中。

如何在C#中不使用OLEDB將Excel轉換為DataTable:圖8

了解更多關於使用IronXL與DataTables的資訊。

結論

IronXL是最常用的Excel插件之一,不依賴於任何額外的外部程式庫。 安裝Microsoft Excel是沒有必要的,因為它是一個獨立的程式。 它可以以多種方式操控Excel文件。 相較之下,Interop程式庫需要其他程式庫來解析文件和編輯Word文件。

IronXL為任何使用Microsoft Excel文件的程式過程提供了一個全面的解決方案,包括計算、排序、合併和文件儲存等操作。 它有助於更有效地處理Excel資料、讀取和寫入文件。

最初,IronXL的定價為$999。 使用者可以通過支付一年的會費來獲得軟體更新和支援。 IronXL還提供防止非法再分發的保護,需付費。 點擊這裡以免費試用IronXL的試用授權以獲得更詳細的定價資訊。 請存取Iron Software主頁以獲取有關其他Iron Software產品的更多資訊。

常見問題

如何在 C# 中將 Excel 資料轉換為 DataTable 而不使用 OLEDB?

要在 C# 中將 Excel 資料轉換為 DataTable 而不使用 OLEDB,您可以使用 IronXL 程式庫。首先,設置一個新的 Visual Studio 專案並安裝 IronXL。使用 WorkBook.Load() 方法載入 Excel 文件,選擇工作表,然後使用 ToDataTable 方法轉換資料。

using IronXL 進行 Excel 操作有什麼優勢?

IronXL 提供更好的性能、更有效的資源使用,並簡化了 Excel 文件操作過程。它不需要安裝 Microsoft Excel,因此避免了與不同 Office 版本的相容性問題。

如何在我的 C# 專案中安裝 IronXL?

您可以在 C# 專案中安裝 IronXL,方法是打開 Visual Studio 中的 NuGet 套件管理器主控台並運行命令 Install-Package IronXL。或者,您可以在 NuGet 套件管理器中搜尋 IronXL 並直接安裝。

using IronXL 是否需要安裝 Microsoft Excel?

不,使用 IronXL 不是必須安裝 Microsoft Excel。該程式庫獨立運行,不需要 Excel,消除了任何依賴性或相容性問題。

using IronXL 將 Excel 轉換為 DataTable 有哪些優勢?

using IronXL 將 Excel 轉換為 DataTable 提供了優異的性能、易用性,且不需額外的軟體安裝。此方法允許在 .NET 應用程式中有效地操作 Excel 文件。

IronXL 是否能處理不同平台上的 Excel 文件?

是的,IronXL 不受平台限制,可以處理不同環境中的 Excel 文件,無需特定版本的 Microsoft Excel。

是否有辦法在購買前試用 IronXL?

是的,IronXL 提供免費試用版,允許使用者在購買前探索其功能。您可以在 IronXL 官網找到更多資訊並下載試用版。

哪些型別的專案最能受益於使用 IronXL?

涉及 Excel 資料操作的專案,例如資料分析、商業智慧應用程式,以及任何需要處理 Excel 文件操作的 .NET 應用程式,都能從 IronXL 中獲得很大便利。

IronXL 如何以程式化方式管理 Excel 文件操作?

IronXL 允許開發者通過其直觀的 API 以程式化方式載入、讀取和操作 Excel 文件,而不依賴 Excel 的安裝組件,這使它成為 .NET 應用程式的有效工具。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話