
如何在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#項目
- 開啟Visual Studio。
- 選擇文件 > 新建 > 項目。
- 選擇C#控制台應用程式或Windows Forms應用程式,適當命名。
步驟2:安裝IronXL
IronXL是一個強大的程式庫,允許您在C#中使用Excel和CSV文件。 要使用它,您需要通過NuGet Package Manager進行安裝。 在Visual Studio中:
-
前往工具 > NuGet Package Manager > 為解決方案管理NuGet包。
-
搜索IronXL.Excel。

-
將這個包安裝到您的項目中。
使用IronXL將CSV文件讀入DataTables
步驟1:設置您的環境
using IronXL;
using System.Data;Imports IronXL
Imports System.Data這些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 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步驟3:載入CSV文件
在ImportCsvToDataTable方法內部,從載入CSV文件開始。IronXL提供了一種簡便的方法來做到這一點:
// Load the CSV file
WorkBook workbook = WorkBook.LoadCSV(filePath);' Load the CSV file
Dim workbook As WorkBook = WorkBook.LoadCSV(filePath)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
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert CSV worksheet to DataTable
Dim dataTable As DataTable = sheet.ToDataTable()
Return dataTable此程式碼片段將CSV資料轉換為DataTable。 DefaultWorkSheet從工作簿中獲取第一個工作表,相當於CSV文件中的完整資料。在CSV文件的情況下,ToDataTable方法是IronXL的一個強大功能,能夠高效地將CSV資料映射到DataTable結構中,包括像CSV文件第一行的列名。
步驟5:在您的應用程式中利用此方法
現在,在您的應用程式中使用ImportCsvToDataTable方法。 例如,您可能希望在應用程式啟動時或使用者上傳CSV文件時調用這個方法。
// Usage
string csvFilePath = "csvfile.csv";
DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath);' Usage
Dim csvFilePath As String = "csvfile.csv"
Dim dataTable As DataTable = CsvToDataTable.ImportCsvToDataTable(csvFilePath)此程式碼段演示瞭如何調用ImportCsvToDataTable方法。 用實際的CSV文件路徑替換**"csvfile.csv"**。
步驟6:處理輸出DataTable
一旦您擁有DataTable,就可以進行各種操作,如在使用者介面中顯示資料、過濾或處理資料。 以下是一些例子:
在控制台應用程式中顯示資料
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此程式碼遍歷DataTable中的每一行和每一列,並將資料列印到控制台。
過濾資料
您可以使用LINQ來過濾DataTable中的資料。 例如,如果您想選擇特定列符合某個條件的行:
var filteredRows = dataTable.AsEnumerable()
.Where(row => row.Field<string>("ColumnName") == "SomeValue");Dim filteredRows = dataTable.AsEnumerable().Where(Function(row) row.Field(Of String)("ColumnName") = "SomeValue")用您要篩選的列名和值替換**"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}");
}
}
}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您可以在Program.cs文件中使用此程式碼。如在生產環境中工作,不要忘記新增IronXL的授權。
程式碼的輸出
一旦運行程式,將載入CSV文件並將其資料匯入到DataTable。 之後,它會在控制台中顯示DataTable列的內容。 這有助於驗證資料是否正確導入到DataTable中。

處理不同的場景
在實際應用中,CSV文件可能在格式和結構上有很大差異。 處理這些變化很重要,以確保您的應用程式具有強大和靈活性。讓我們擴展說明如何使用IronXL在DataTable中匯入CSV資料時處理不同情況。
處理不同的分隔符
逗號是CSV文件中的預設分隔符。 不過,CSV文件可能並不總是使用逗號來分隔數值。 有時,分號、標籤或其他字元被用作分隔符。 在IronXL中要處理這種情況:
指定自定義分隔符:在載入CSV文件之前,可以指定文件的分隔符。 例如,如果您的文件使用分號(;),您可以這樣設置:
WorkBook workbook = WorkBook.LoadCSV(filePath, listDelimiter: ";");Dim workbook As WorkBook = WorkBook.LoadCSV(filePath, listDelimiter:= ";")處理大型CSV文件
處理大型CSV文件時,考慮記憶體使用和性能至關重要。 IronXL提供了高效的方法來處理大型文件,而不需一次性把整個文件載入到記憶體中。 您可以分塊讀取文件或使用IronXL提供的流式API來有效管理記憶體使用。
結論
在C#中使用IronXL將CSV資料導入DataTable非常簡便。 它增強了您應用程式的資料操作能力,允許您高效地處理CSV文件。 根據本教程中介紹的步驟,初學者可以輕鬆將此功能整合到他們的C#項目中。
IronXL免費為使用者提供試用以探索其功能。 對於需要更多高級功能和支援的使用者,還有許可選項可以選擇。

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



