如何在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;
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 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
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
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
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();
}
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");
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}");
}
}
}
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: ";");
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免費為使用者提供試用以探索其功能。 對於需要更多高級功能和支援的使用者,還有許可選項可以選擇。
常見問題
如何將 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 套件管理器獲得。




