在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
歡迎來到這個初學者教程,學習如何使用IronXL將CSV(逗號分隔值)文件匯入到DataTable中。 本指南將為您提供一個易於遵循的方法,即使您是 C# 的新手,也會覺得此過程簡單明瞭。 我們將涵蓋從設置環境到編寫源代碼的每個步驟。 在本教程結束時,您將清楚了解如何將 CSV 數據轉換為 Datatable、管理 Datatable 列以及在 C# 中使用 var reader 和連接字串處理 CSV 文檔的各種方面。
在深入探討之前,請確保您已經:
CSV 文件(逗號分隔值文件)是一種使用特定結構來排列表格數據的純文字文件。 作為數據交換的常見格式,CSV 簡單、緊湊,並可用於多種平台。 在 CSV 檔案中,數據以逗號分隔,每一行代表一個新的行,且欄位標題通常位於第一行,int i。
DataTable 是 C# 中 ADO.NET 庫的一部分,表示一個在記憶體中的資料表。 它由行和列組成,每個列可以是不同的數據類型。 DataTables 高度靈活,可以以結構化格式表示數據,非常適合處理 CSV 文件數據。
打開 Visual Studio。
選擇檔案 > 新建 > 專案。
IronXL 是一個強大的庫,讓您可以在 C# 中使用 Excel 和 CSV 檔案。 要使用它,您需要通過 NuGet 套件管理器安裝。 在 Visual Studio 中:
前往 工具 > NuGet 套件管理員 > 管理方案的 NuGet 套件。
搜尋IronXL.Excel。
using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
這些using語句包含了我們任務需要的命名空間。
定義一個類別,CsvToDataTable,具有一個靜態方法ImportCsvToDataTable。 此方法將負責將 CSV 文件轉換為DataTable。
public class CsvToDataTable
{
public static DataTable ImportCsvToDataTable(string filePath)
{
// Code snippet to import CSV will be placed here
}
}
public class CsvToDataTable
{
public static DataTable ImportCsvToDataTable(string filePath)
{
// Code snippet to import CSV will be placed here
}
}
Public Class CsvToDataTable
Public Shared Function ImportCsvToDataTable(ByVal filePath As String) As DataTable
' Code snippet to import CSV will be placed here
End Function
End Class
在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 檔案的路徑。
將加載的 CSV 數據轉換為DataTable。 這一步是主要步驟,因為它將資料轉換成可以在 C# 應用程式中輕鬆操作和顯示的格式。
// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert CSV worksheet to DataTable dt
DataTable dataTable = sheet.ToDataTable();
return dataTable;
// Get the first worksheet
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert CSV worksheet to DataTable dt
DataTable dataTable = sheet.ToDataTable();
return dataTable;
' Get the first worksheet
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert CSV worksheet to DataTable dt
Dim dataTable As DataTable = sheet.ToDataTable()
Return dataTable
這段程式碼片段將 CSV 資料轉換為 DataTable。 DefaultWorkSheet 從工作簿中獲取第一個工作表,在 CSV 文件的情況下,相當於整個 CSV 數據。ToDataTable 方法是 IronXL 的一個強大功能,能夠高效地將 CSV 數據映射到 DataTable 結構中,包括如果 CSV 文件的第一行中存在的列字符串標題行。
現在,在您的應用程式中使用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方法。 將「csvfile.csv」替換為您的 CSV 檔案的實際檔案路徑。
一旦擁有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, listDelimiter: ";");
// 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 strfilepath = "sample_data.csv"; // CSV file path
DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(strfilepath);
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, listDelimiter: ";");
// 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 strfilepath = "sample_data.csv"; // CSV file path
DataTable dataTable = CsvToDataTable.ImportCsvToDataTable(strfilepath);
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, listDelimiter:= ";")
' 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 strfilepath As String = "sample_data.csv" ' CSV file path
Dim dataTable As DataTable = CsvToDataTable.ImportCsvToDataTable(strfilepath)
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。
在現實世界的情境中,CSV 文件的格式和結構可能會有顯著的差異。 處理這些變化是非常重要的,以確保您的應用程式穩健且多樣化。讓我們進一步討論如何在使用IronXL將CSV數據匯入DataTable時管理不同的情境。
逗號是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 檔案時,考慮記憶體使用量和效能非常重要。 IronXL 提供有效的方法來處理大型文件,而不需要一次將整個文件加載到記憶體中。 您可以分塊讀取檔案,或利用IronXL提供的串流API以有效管理記憶體使用。
使用 IronXL 在 C# 中將 CSV 數據導入 DataTable 非常簡單。 它增強了您的應用程式的數據操作能力,使您能夠有效地處理 CSV 檔案。 透過本教程中列出的步驟,初學者可以輕鬆將此功能整合到他們的C#專案中。
IronXL 提供免費試用,讓用戶探索其功能。 對於那些尋求更高級功能和支援的人,授權選項從$749開始。