跳至頁尾內容
使用 IRONXL
如何在 C# 中將 CSV 檔案匯入資料表 | IronXL

如何在 C# 中將 CSV 檔案匯入到資料表中

歡迎來到本篇關於使用IronXL將 CSV(逗號分隔值)檔案匯入 C# 中的DataTable 的入門教學。 本指南將為您提供易於遵循的方法,確保即使您是 C# 新手,也能輕鬆上手。 我們將涵蓋從搭建環境到編寫原始程式碼的每一個步驟。 在本教程結束時,您將清楚地了解如何將 CSV 資料轉換為 DataTable、管理 DataTable 列以及使用檔案讀取器和 IronXL 在 C# 中處理 CSV 文件的各個方面。

先決條件

在深入探討之前,請確保您已準備好:

  • 具備 C# 基礎知識
  • 您的本機上已安裝 Visual Studio
  • IronXL 庫,可透過 NuGet 套件管理器取得。

瞭解基礎知識

什麼是CSV檔案?

CSV 文件(逗號分隔值文件)是一種純文字文件,它使用特定的結構來排列表格資料。 CSV 是一種常見的資料交換格式,因為它簡單、緊湊,並且與眾多平台相容。 在 CSV 檔案中,資料以逗號分隔,每一行代表一個新的資料行,列標題通常位於第一行。

理解 C# 中的 DataTables

DataTable 是 C# 中 ADO.NET 函式庫的一部分,它表示記憶體中的單一資料表。 它由行和列組成,每一列都可以是不同的資料類型。 DataTables 具有高度的靈活性,能夠以結構化格式表示數據,因此非常適合處理 CSV 檔案資料。

設定您的項目

步驟 1:建立一個新的 C# 項目

1.開啟 Visual Studio。

  1. 選擇檔案>新建>項目
  2. 選擇一個 C# 控制台應用程式或 Windows 窗體應用程序,並為其命名。

步驟 2:安裝 IronXL

IronXL 是一個功能強大的庫,可讓您在 C# 中處理 Excel和 CSV 檔案。 要使用它,需要透過 NuGet 套件管理器進行安裝。 在 Visual Studio:

  1. 前往"工具" > "NuGet 套件管理員" > "管理解決方案的 NuGet 套件"
  2. 搜尋IronXL.Excel

    如何在 C# 中將 CSV 檔案匯入資料表:圖 1 - IronXL

  3. 將軟體包安裝到您的專案中。

使用 IronXL 將 CSV 檔案讀取到 DataTables 中

步驟 1:設定環境

using IronXL;
using System.Data;
using IronXL;
using System.Data;
$vbLabelText   $csharpLabel

這些using語句包含了我們任務所需的命名空間。

步驟 2:建立匯入 CSV 檔案的方法

定義一個類別CsvToDataTable ,並定義一個靜態方法ImportCsvToDataTable 。 此方法負責將 CSV 檔案轉換為DataTable

public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Code snippet to import CSV will be placed here
        return null; // Placeholder return statement
    }
}
public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Code snippet to import CSV will be placed here
        return null; // Placeholder return statement
    }
}
$vbLabelText   $csharpLabel

步驟 3:載入 CSV 文件

ImportCsvToDataTable方法中,首先載入 CSV 檔案。 IronXL 提供了一種簡單直接的方法來實現這一點:

// Load the CSV file
WorkBook workbook = WorkBook.LoadCSV(filePath);
// Load the CSV file
WorkBook workbook = WorkBook.LoadCSV(filePath);
$vbLabelText   $csharpLabel

WorkBook.LoadCSV是 IronXL 中用來載入 CSV 檔案的方法。 其中, filePath是您的 CSV 檔案的路徑。

步驟 4:將 CSV 檔案轉換為資料表

將載入的 CSV 資料轉換為DataTable 。 這一步驟至關重要,因為它將資料轉換為可以在 C# 應用程式中輕鬆操作和顯示的格式。

// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert CSV worksheet to DataTable
DataTable dataTable = sheet.ToDataTable();
return dataTable;
// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert CSV worksheet to DataTable
DataTable dataTable = sheet.ToDataTable();
return dataTable;
$vbLabelText   $csharpLabel

這段程式碼將 CSV 資料轉換為DataTableDefaultWorkSheet方法會從工作簿中取得第一個工作表,如果是 CSV 文件,則相當於取得整個 CSV 資料。 ToDataTable 方法是IronXL的一個強大功能,它可以有效地將 CSV 資料對應到DataTable結構,如果 CSV 檔案的第一行包含列標題行,也會將其包含在內。

步驟 5:在應用程式中使用該方法

現在,在您的應用程式中使用ImportCsvToDataTable方法。 例如,您可能希望在應用程式啟動時或使用者上傳 CSV 檔案時呼叫此方法。

// Usage
string csvFilePath = "csvfile.csv";
DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath);
// Usage
string csvFilePath = "csvfile.csv";
DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath);
$vbLabelText   $csharpLabel

此程式碼片段示範如何呼叫ImportCsvToDataTable方法。 將"csvfile.csv"替換為您的 CSV 檔案的實際檔案路徑。

步驟 6:處理輸出資料表

有了資料表之後,就可以執行各種操作,例如在使用者介面中顯示資料、篩選資料或處理資料。 以下是一些例子:

在控制台應用程式中顯示數據

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

這段程式碼遍歷資料表中的每一行和每一列,並將資料列印到控制台。

資料篩選

您可以使用 LINQ 來篩選 DataTable 中的資料。 例如,如果您想要選擇特定列符合某個條件的行:

var filteredRows = dataTable.AsEnumerable()
                            .Where(row => row.Field<string>("ColumnName") == "SomeValue");
var filteredRows = dataTable.AsEnumerable()
                            .Where(row => row.Field<string>("ColumnName") == "SomeValue");
$vbLabelText   $csharpLabel

"ColumnName""SomeValue"替換為要篩選的列名和值。

完整程式碼片段

以下是完整的源代碼,您可以在專案中使用:

using IronXL;
using System;
using System.Data;
using System.IO;

public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Check if the file exists
        if (!File.Exists(filePath))
        {
            throw new FileNotFoundException($"The file at {filePath} was not found.");
        }

        // Load the CSV file
        WorkBook workbook = WorkBook.LoadCSV(filePath);
        // Get the first worksheet
        WorkSheet sheet = workbook.DefaultWorkSheet;
        // Convert the worksheet to DataTable
        DataTable dataTable = sheet.ToDataTable();
        return dataTable;
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Usage
        try
        {
            string filePath = "sample_data.csv"; // CSV file path
            DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(filePath);
            foreach (DataRow row in dataTable.Rows)
            {
                foreach (var item in row.ItemArray)
                {
                    Console.Write($"{item} ");
                }
                Console.WriteLine();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}
using IronXL;
using System;
using System.Data;
using System.IO;

public class CsvToDataTable
{
    public static DataTable ImportCsvToDataTable(string filePath)
    {
        // Check if the file exists
        if (!File.Exists(filePath))
        {
            throw new FileNotFoundException($"The file at {filePath} was not found.");
        }

        // Load the CSV file
        WorkBook workbook = WorkBook.LoadCSV(filePath);
        // Get the first worksheet
        WorkSheet sheet = workbook.DefaultWorkSheet;
        // Convert the worksheet to DataTable
        DataTable dataTable = sheet.ToDataTable();
        return dataTable;
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Usage
        try
        {
            string filePath = "sample_data.csv"; // CSV file path
            DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(filePath);
            foreach (DataRow row in dataTable.Rows)
            {
                foreach (var item in row.ItemArray)
                {
                    Console.Write($"{item} ");
                }
                Console.WriteLine();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}
$vbLabelText   $csharpLabel

您可以在Program.cs檔案中使用此程式碼。如果您在生產環境中使用,請不要忘記新增 IronXL 的授權。

程式碼輸出

運行程式碼後,它將載入 CSV 檔案並將其資料匯入到資料表中。 之後,控制台將顯示資料表列的內容。 這有助於驗證資料是否已正確匯入到資料表中。

如何在 C# 中將 CSV 檔案匯入到資料表中:圖 2 - 輸出

應對不同情況

在實際應用中,CSV 檔案的格式和結構可能存在很大差異。 妥善處理這些變化至關重要,以確保應用程式的穩健性和通用性。接下來,我們將詳細介紹如何使用 IronXL 將 CSV 資料匯入 DataTable 時處理不同的場景。

處理不同的分隔符

逗號是 CSV 檔案中的預設分隔符號。 但是,CSV 檔案可能並非總是使用逗號分隔值。 有時,會使用分號、製表符或其他字元作為分隔符號。 在 IronXL 中處理此問題:

指定自訂分隔符號:在載入 CSV 檔案之前,您可以指定檔案的分隔符號。 例如,如果你的檔案使用分號( ; ),你可以這樣設定:

WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");
$vbLabelText   $csharpLabel

處理大型 CSV 文件

處理大型 CSV 檔案時,必須考慮記憶體使用情況和效能。 IronXL 提供了一種高效的方式來處理大型文件,而無需一次性將整個文件加載到記憶體中。 您可以分塊讀取文件,也可以利用 IronXL 提供的串流 API 來有效管理記憶體使用量。

結論

使用 IronXL 在 C# 中將 CSV 資料匯入 DataTable 非常簡單。 它增強了應用程式的資料處理能力,使您能夠有效率地處理 CSV 檔案。 透過本教程中概述的步驟,初學者可以輕鬆地將此功能整合到他們的 C# 專案中。

IronXL 提供免費試用,供使用者體驗其各項功能。 對於尋求更高級功能和支援的用戶,我們提供許可選項。

常見問題解答

如何在C#中將CSV資料匯入DataTable中?

您可以使用 IronXL 的WorkBook.LoadCSV方法載入 CSV 文件,然後使用ToDataTable方法將其轉換為 DataTable,從而將 CSV 資料匯入到 C# 中的 DataTable 中。

使用 IronXL 設定 Visual Studio 專案需要哪些步驟?

若要設定用於使用 IronXL 的 Visual Studio 項目,請透過 NuGet 套件管理器安裝 IronXL 套件。具體操作為:依序點選“工具”>“NuGet 套件管理器”>“管理解決方案的 NuGet 套件”,然後搜尋 IronXL.Excel。最後,將其添加到您的項目中。

IronXL 能否處理使用不同分隔符號的 CSV 檔案?

是的,IronXL 可以透過在WorkBook.LoadCSV方法中使用listDelimiter參數指定自訂分隔符號來處理具有不同分隔符號的 CSV 檔案。

載入 CSV 檔案時遇到「檔案未找到」錯誤,我該怎麼辦?

如果遇到「檔案未找到」錯誤,請確保檔案路徑正確。使用File.Exists(filePath) ` 檢查檔案是否存在,以避免此類錯誤。

如何在C#中有效率地管理大型CSV檔案?

為了有效率地管理大型 CSV 文件,IronXL 提供了分塊讀取文件或使用串流 API 等功能,這有助於優化記憶體使用和效能。

將 CSV 資料轉換為 DataTable 有什麼好處?

將 CSV 資料轉換為 DataTable 可以實現結構化資料操作,從而更容易在 C# 應用程式中處理、篩選和顯示資料。

如何在 C# 控制台應用程式中顯示 DataTable 的內容?

若要在 C# 控制台應用程式中顯示 DataTable 的內容,請遍歷每個DataRow並使用巢狀循環列印每個項,以在控制台中顯示資料。

什麼是 CSV 檔案?它有什麼用途?

CSV 文件,即逗號分隔值文件,是一種純文字文件,資料之間以逗號分隔。由於其簡單易用且與許多應用程式相容,因此被廣泛用於資料交換。

要按照教學將 CSV 檔案匯入 DataTable,我需要哪些先決條件?

要學習本教學課程,您需要對 C# 有基本的了解,您的電腦上需要安裝 Visual Studio,並且需要 IronXL 庫,該庫可以透過 NuGet 套件管理器取得。

喬迪·巴迪亞
軟體工程師
喬迪精通Python、C#和C++,除了在Iron Software運用這些技能外,他還從事遊戲程式設計。他參與產品測試、產品開發和研究等工作,為產品的持續改進做出了巨大貢獻。豐富的經驗讓他始終保持挑戰性和工作熱情,他表示這是他最喜歡在Iron Software工作的原因之一。喬迪在佛羅裡達州邁阿密長大,畢業於佛羅裡達大學,主修電腦科學和統計學。