跳至頁尾內容
USING IRONXL
如何在 C# 中匯入 CSV 到 Datatable | IronXL

如何在C#中將CSV導入資料表

歡迎來到這個初學者教程,我們將學習如何使用IronXL將CSV(逗號分隔值)文件匯入到C#中的DataTable。 本指南將提供一種易於遵循的方法,即使您是C#的新手,也會發現這個過程很簡單。 我們將講解每一步,從設置環境到編寫源程式碼。 在本教程結束時,您將清楚地了解如何將CSV資料轉換為DataTable,管理DataTable的列,並藉由文件閱讀器和IronXL處理C#中的各種CSV文件方面。

先決條件

在我們深入研究之前,請確保您已具備:

  • C#的基本知識
  • 已在您的本地機器上安裝Visual Studio
  • 可以通過NuGet Package Manager獲得的IronXL程式庫

了解基礎

什麼是CSV文件?

CSV文件(逗號分隔值文件)是一種型別的純文字文件,使用特定的結構來安排表格資料。 它是一種常見的資料交換格式,因為CSV格式簡單、緊湊,並且相容多個平臺。 在CSV文件中,資料由逗號分隔,每一行表示一個新的行,通常第一行是列名。

Understanding DataTables in C

DataTable是C#中ADO.NET程式庫的一部分,用於表示記憶體中資料的單個表。 它由行和列組成,每個列可以是不同的資料型別。 DataTable非常靈活,能夠以結構化格式表示資料,非常適合用於處理CSV文件資料。

設置您的項目

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

  1. 開啟Visual Studio。
  2. 選擇文件 > 新建 > 項目
  3. 選擇C#控制台應用程式或Windows Forms應用程式,適當命名。

步驟2:安裝IronXL

IronXL是一個強大的程式庫,允許您在C#中使用Excel和CSV文件。 要使用它,您需要通過NuGet Package Manager進行安裝。 在Visual Studio中:

  1. 前往工具 > NuGet Package Manager > 為解決方案管理NuGet包
  2. 搜索IronXL.Excel

    如何在C#中將CSV匯入到DataTable:圖1 - IronXL

  3. 將這個包安裝到您的項目中。

使用IronXL將CSV文件讀入DataTables

步驟1:設置您的環境

using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports 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
    }
}
Public Class CsvToDataTable
	Public Shared Function ImportCsvToDataTable(ByVal filePath As String) As DataTable
		' Code snippet to import CSV will be placed here
		Return Nothing ' Placeholder return statement
	End Function
End Class
$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);
' Load the CSV file
Dim workbook As WorkBook = WorkBook.LoadCSV(filePath)
$vbLabelText   $csharpLabel

WorkBook.LoadCSV是IronXL中的一個方法,用於載入CSV文件。 這裡,filePath是您的CSV文件的路徑。

步驟4:將CSV轉換為DataTable

將載入的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;
' Get the first worksheet
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert CSV worksheet to DataTable
Dim dataTable As 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);
' Usage
Dim csvFilePath As String = "csvfile.csv"
Dim dataTable As DataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath)
$vbLabelText   $csharpLabel

此程式碼段演示瞭如何調用ImportCsvToDataTable方法。 用實際的CSV文件路徑替換"csvfile.csv"

步驟6:處理輸出DataTable

一旦您擁有DataTable,就可以進行各種操作,如在使用者介面中顯示資料、過濾或處理資料。 以下是一些例子:

在控制台應用程式中顯示資料

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();
}
For Each row As DataRow In dataTable.Rows
	For Each item In row.ItemArray
		Console.Write($"{item} ")
	Next item
	Console.WriteLine()
Next row
$vbLabelText   $csharpLabel

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

過濾資料

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

var filteredRows = dataTable.AsEnumerable()
                            .Where(row => row.Field<string>("ColumnName") == "SomeValue");
var filteredRows = dataTable.AsEnumerable()
                            .Where(row => row.Field<string>("ColumnName") == "SomeValue");
Dim filteredRows = dataTable.AsEnumerable().Where(Function(row) row.Field(Of 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}");
        }
    }
}
Imports IronXL
Imports System
Imports System.Data
Imports System.IO

Public Class CsvToDataTable
	Public Shared Function ImportCsvToDataTable(ByVal filePath As String) As DataTable
		' Check if the file exists
		If Not File.Exists(filePath) Then
			Throw New FileNotFoundException($"The file at {filePath} was not found.")
		End If

		' Load the CSV file
		Dim workbook As WorkBook = WorkBook.LoadCSV(filePath)
		' Get the first worksheet
		Dim sheet As WorkSheet = workbook.DefaultWorkSheet
		' Convert the worksheet to DataTable
		Dim dataTable As DataTable = sheet.ToDataTable()
		Return dataTable
	End Function
End Class

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Usage
		Try
			Dim filePath As String = "sample_data.csv" ' CSV file path
			Dim dataTable As DataTable = CsvToDataTable.ImportCsvToDataTable(filePath)
			For Each row As DataRow In dataTable.Rows
				For Each item In row.ItemArray
					Console.Write($"{item} ")
				Next item
				Console.WriteLine()
			Next row
		Catch ex As Exception
			Console.WriteLine($"An error occurred: {ex.Message}")
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel

您可以在Program.cs文件中使用此程式碼。如在生產環境中工作,不要忘記新增IronXL的授權。

程式碼的輸出

一旦運行程式,將載入CSV文件並將其資料匯入到DataTable。 之後,它會在控制台中顯示DataTable列的內容。 這有助於驗證資料是否正確導入到DataTable中。

如何在C#中將CSV匯入到DataTable:圖2 - 輸出

處理不同的場景

在實際應用中,CSV文件可能在格式和結構上有很大差異。 處理這些變化很重要,以確保您的應用程式具有強大和靈活性。讓我們擴展說明如何使用IronXL在DataTable中匯入CSV資料時處理不同情況。

處理不同的分隔符

逗號是CSV文件中的預設分隔符。 不過,CSV文件可能並不總是使用逗號來分隔數值。 有時,分號、標籤或其他字元被用作分隔符。 在IronXL中要處理這種情況:

指定自定義分隔符:在載入CSV文件之前,可以指定文件的分隔符。 例如,如果您的文件使用分號(;),您可以這樣設置:

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

處理大型CSV文件

處理大型CSV文件時,考慮記憶體使用和性能至關重要。 IronXL提供了高效的方法來處理大型文件,而不需一次性把整個文件載入到記憶體中。 您可以分塊讀取文件或使用IronXL提供的流式API來有效管理記憶體使用。

結論

在C#中使用IronXL將CSV資料導入DataTable非常簡便。 它增強了您應用程式的資料操作能力,允許您高效地處理CSV文件。 根據本教程中介紹的步驟,初學者可以輕鬆將此功能整合到他們的C#項目中。

IronXL免費為使用者提供試用以探索其功能。 對於需要更多高級功能和支援的使用者,還有許可選項可以選擇。

常見問題

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

您可以使用 IronXL 的 WorkBook.LoadCSV 方法來載入 CSV 文件,然後使用 ToDataTable 方法將其轉換為 DataTable。

設置 Visual Studio 專案以使用 IronXL 的步驟有哪些?

要設置 Visual Studio 專案以使用 IronXL,請通過 NuGet 套件管理器安裝 IronXL 包,方法是前往工具 > NuGet 套件管理器 > 管理解決方案的 NuGet 套件,然後搜尋 IronXL.Excel,並將其新增到您的專案中。

IronXL 能處理具有不同分隔符的 CSV 文件嗎?

是的,IronXL 可以處理具有不同分隔符的 CSV 文件,方法是在 WorkBook.LoadCSV 方法中使用 listDelimiter 參數來指定自定義分隔符。

載入 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 套件管理器獲得。

Curtis Chau
技術作家

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

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

Iron 支援團隊

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