跳過到頁腳內容
使用 IRONXL
如何用 C# 不用 oledb 將 Excel 轉換為 DataTable | IronXL

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

Microsoft Excel 是由微軟創建的一個強大的試算表程式。 它是一個被廣泛使用的工具,用於數據組織、分析和可視化。 它是微軟 Office 套件的一部分。 由於其多種功能,Excel 是一個多用途的工具,專業人士、個人、組織和大學都可以使用。

Excel 在包括金融、會計、商業分析、數據分析、研究、教育等廣泛的領域被廣泛使用。 由於其多功能性和擴展功能集,它是在個人和專業情境中組織、評估和展示數據的首選工具。 在本文中,我們將在 C# 中將 Excel 轉換為 DataTable 而不使用 OLEDB 連接。

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

  1. 新建一個 Visual Studio 项目。
  2. 安裝所需的庫。
  3. 將 Excel 文件加載到一個對象中。
  4. 使用特定方法將 Excel 表格數據轉換為 DataTable。
  5. 根據需要使用數據表。

IronXL 庫

處理 .NET 程式中的 Excel 文件的一種替代 Microsoft Interop 的方法是 IronXL。 雖然 Microsoft Interop 需要使用 Interop 程式集來連接到 Excel,IronXL 提供了一種更簡單、更高效和更強大的方式在 .NET 環境中以程式方式處理 Excel 文件。

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

  • 性能和資源節約: IronXL 的性能和資源效率超過 Microsoft Interop,因為它不依賴於在 PC 上安裝的 Excel 程式。
  • 可讀性和簡單性: IronXL 提供了一個更簡單的 API,讓您可以更輕鬆地讀取、寫入和處理 Excel 文件,而不會遭遇 Microsoft Interop 的缺點。
  • 相容性和相依性: IronXL 通過不需要在 PC 上安裝 Microsoft Excel,消除了不同 Office 或 Excel 版本的相依性和潛在的相容性問題。
  • 平台獨立性: 雖然 Microsoft Interop 與某些 Microsoft Office 版本更緊密的鏈接,IronXL 提供了在更廣泛的設置和平台中更大的靈活性和簡單性部署。

由於 IronXL 更快、更易用,且需要安裝更少的第三方軟件,它通常是需要以程式方式處理 Excel 文件的 .NET 開發人員的更佳選擇。 然而,專案的具體因素、已有的基礎設施,以及用戶對每個庫的熟悉程度可能會影響其選擇。

在選擇這些解決方案中的任何一個時,務必考慮應用程式的需求。 欲了解有關 IronXL 庫的更多資訊,請訪問這個 網站

在 Visual Studio 中創建新專案

要打开 Visual Studio,从菜单中单击 文件 并选择“新建项目”。然后,选择“Windows 窗体应用程序”。

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

在選擇文件位置後,請在相應的文字區域中輸入專案名稱。 接下來,單擊“創建”按鈕並選擇所需的 .NET Framework,如下範例所示。

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

選擇的應用程式類型將根據 Visual Studio 專案的結構進行決定。 要添加代碼,您可以進入 Program.cs 文件並使用控制台、Windows 或 web 應用構建或執行應用程序。

如何在 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 Form 加載 Excel 文件並將其轉換為新的 DataTable。
  • 它使用一個打開文件對話框讓用戶選擇一個 Excel 文件。
  • 使用 IronXL 的 WorkBook.Load() 方法將 Excel 文件加載到 Workbook 對象中。
  • 使用索引或名稱選擇第一個工作表。
  • ToDataTable 方法用來將工作表數據轉換成 DataTable。
  • 填充的 DataTable 被設置為 Windows Form 上 DataGridView 控件的數據源。

在底部,表單和按鈕將 Excel 文件加載到應用程序中。

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

當用戶點擊“加載 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 的價格為 $799。 用戶可通過支付一年會員費獲得軟件更新和支持。 IronXL 還提供對非法再分發的保護,需額外支付費用。 點擊此處試用 IronXL 的 免費試用版以獲取更詳細的定價信息。 Visit the Iron Software home page for further information on other Iron software products.

常見問題解答

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

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

使用 IronXL 執行 Excel 操作相比於使用 Microsoft Interop 有什麼優勢?

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

如何在我的 C# 項目中安裝 IronXL?

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

使用 IronXL 是否需要安裝 Microsoft Excel?

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

使用 IronXL 將 Excel 轉換為 DataTable 的好處是什麼?

使用 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 應用程式的高效工具。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。