C# 教學:如何將 Excel 資料匯入 DataTable

深入學習如何使用C#將Excel資料轉換成DataTable。本教學涵蓋詳細步驟與範例,助您輕鬆掌握從Excel檔案讀取資料並轉換成DataTable的技巧,適合新手和進階使用者。

讓資訊整合更靈活

記錄、協作、成長 — Notion帶來比Excel更靈活的工作方式!
免費使用

200+模板自動化工作流程

從數據到成果,只需一步 — 用Monday代替Excel,效率倍增!
免費使用

AI智能團隊協作

AI驅動的ClickUp超越Excel,讓工作更精準快速!
免費使用

介紹

在開發各類應用程式時,簿記和報告常常是不可或缺的一部分。Excel作為最常用的電子表格工具之一,常常被用來存儲和管理數據。C# 是一種強大的程式設計語言,可以透過多種方法讀取Excel文件並將其轉換成DataTable。這篇教學將示範如何使用C#讀取Excel文件並將其轉換成DataTable。

所需工具和庫

在這個教學中,我們將使用以下工具和庫:

  • .NET Framework 或 .NET Core
  • Visual Studio 或其他C#開發環境
  • ExcelDataReader 和 ExcelDataReader.DataSet 兩個NuGet包

安裝ExcelDataReader

首先,開啟NuGet包管理器,搜尋並安裝 ExcelDataReaderExcelDataReader.DataSet 這兩個包。

實作步驟

匯入必要的命名空間

在程式碼文件的頂部,匯入處理Excel文件所需的命名空間:

using System;
using System.Data;
using System.IO;
using ExcelDataReader;

讀取Excel文件並轉換為DataTable

以下是一個讀取Excel文件並轉換為DataTable的範例程式碼:

public DataTable ExcelToDataTable(string filePath)
{
    System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

    using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read))
    {
        using (var reader = ExcelReaderFactory.CreateReader(stream))
        {
            var result = reader.AsDataSet(new ExcelDataSetConfiguration()
            {
                ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
                {
                    UseHeaderRow = true
                }
            });

            return result.Tables[0];
        }
    }
}

詳細講解程式碼

註冊編碼提供者

第一步是註冊編碼提供者,以便能夠讀取含有不同字符編碼的Excel文件:

System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

打開文件流

使用 File.Open 方法以讀取模式打開Excel文件:

using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read))

建立讀取器

使用 ExcelReaderFactory.CreateReader 方法建立Excel讀取器:

using (var reader = ExcelReaderFactory.CreateReader(stream))

讀取並配置DataSet

使用讀取器的 AsDataSet 方法將Excel內容轉換為DataSet,我們需要配置DataSet的選項,例如使用第一行作為標題行:

var result = reader.AsDataSet(new ExcelDataSetConfiguration()
{
    ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
    {
        UseHeaderRow = true
    }
});

返回DataTable

最後,從DataSet中取得第一個DataTable並返回:

return result.Tables[0];

測試和驗證

以下是一個簡單的測試方法,該方法讀取指定的Excel文件並在控制台輸出DataTable的內容:

class Program
{
    static void Main(string[] args)
    {
        var filePath = "path_to_your_excel_file.xlsx";
        var dataTable = ExcelToDataTable(filePath);

        foreach (DataRow row in dataTable.Rows)
        {
            foreach (var item in row.ItemArray)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
        }
    }

    public static DataTable ExcelToDataTable(string filePath)
    {
        System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

        using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read))
        {
            using (var reader = ExcelReaderFactory.CreateReader(stream))
            {
                var result = reader.AsDataSet(new ExcelDataSetConfiguration()
                {
                    ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
                    {
                        UseHeaderRow = true
                    }
                });

                return result.Tables[0];
            }
        }
    }
}

結論

透過本文教學,你應該已經學會如何使用C#讀取Excel文件並將其內容轉換為DataTable。這個流程在處理各式各樣的數據匯入及導出需求中非常有用。希望這些步驟及示例程式碼能對你有所幫助。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *