跳至頁尾內容
USING IRONXL

如何使用 IronXL 在 C# 中讀取 CSV 檔案

在C# .NET中讀取CSV文件變得非常簡單,使用IronXL —— 單個方法呼叫即可將逗號分隔的資料載入到結構化工作簿中,無需任何自定義解析程式碼。 本指南介紹您需要的每一種技術:基本載入、自定義分隔符、DataTable轉換、單元格級別存取、錯誤處理以及導出為Excel格式。

在.NET中讀取CSV文件的最簡單方法是什麼?

最簡單的方法是使用WorkBook.LoadCSV直接將CSV資料導入到工作簿結構中。 這單個方法自動處理解析、分隔符檢測和資料組織——無需建立StreamReader或手動處理每個字串行。

通過Visual Studio中的NuGet Package Manager Console安裝IronXL。 打開您的.NET項目並運行:

Install-Package IronXL.Excel

Read CSV .NET: The Simplest C# Approach Using IronXL: Image 1 - Installation

using IronXL;

// Load CSV file into a workbook with one method call
WorkBook workbook = WorkBook.LoadCSV("sales_data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ",");
// Access the default worksheet containing CSV data
WorkSheet sheet = workbook.DefaultWorkSheet;
// Display all rows and CSV columns
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.Write(cell.Value + "\t");
    }
    Console.WriteLine();
}
using IronXL;

// Load CSV file into a workbook with one method call
WorkBook workbook = WorkBook.LoadCSV("sales_data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ",");
// Access the default worksheet containing CSV data
WorkSheet sheet = workbook.DefaultWorkSheet;
// Display all rows and CSV columns
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.Write(cell.Value + "\t");
    }
    Console.WriteLine();
}
Imports IronXL

' Load CSV file into a workbook with one method call
Dim workbook As WorkBook = WorkBook.LoadCSV("sales_data.csv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:=",")
' Access the default worksheet containing CSV data
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Display all rows and CSV columns
For Each row In sheet.Rows
    For Each cell In row
        Console.Write(cell.Value & vbTab)
    Next
    Console.WriteLine()
Next
$vbLabelText   $csharpLabel

輸入

Read CSV .NET: The Simplest C# Approach Using IronXL: Image 2 - Sample CSV Input

輸出

Read CSV .NET: The Simplest C# Approach Using IronXL: Image 3 - Console Output

LoadCSV方法接受三個參數:文件路徑、內部表示的目標Excel格式以及分割值的分隔符字元。 一旦載入後,CSV內容可通過DefaultWorkSheet屬性存取,這提供了包含所有導入記錄的主工作表。

巢狀迴圈結構遍歷工作表中的每個CellValue屬性返回單元格內容作為物件,而製表符建立了可讀的列分隔在控制台輸出中。 這個模式無論是文件包含10行還是包含數千條記錄的大型CSV文件,運作都相同。

IronXL在.NET Framework、.NET Core和.NET 5+上都能正常運作,無需安裝Microsoft Office——這使得它非常適合用於ASP.NET Core和.NET Core Web API項目。 這個程式庫可以在NuGet上找到並且可以清晰地整合到任何型別的項目中。 如果您想了解程式庫為您處理的內容,下一節將介紹手動解析涉及的內容。

手動CSV解析如何與使用程式庫進行比較?

了解IronXL消除的複雜性有助於闡明其價值。 手動CSV解析需要處理多個邊界情況,這些情況看似簡單,但在任何項目中都會迅速變得麻煩。

using System.IO;

// Manual approach -- requires extensive code for basic functionality
string path = "data.csv";
string[] lines = File.ReadAllLines(path);
foreach (string line in lines)
{
    // This breaks when CSV fields contain commas inside quotes
    string[] fields = line.Split(',');
    foreach (string field in fields)
    {
        Console.Write(field.Trim() + "\t");
    }
    Console.WriteLine();
}
using System.IO;

// Manual approach -- requires extensive code for basic functionality
string path = "data.csv";
string[] lines = File.ReadAllLines(path);
foreach (string line in lines)
{
    // This breaks when CSV fields contain commas inside quotes
    string[] fields = line.Split(',');
    foreach (string field in fields)
    {
        Console.Write(field.Trim() + "\t");
    }
    Console.WriteLine();
}
Imports System.IO

' Manual approach -- requires extensive code for basic functionality
Dim path As String = "data.csv"
Dim lines As String() = File.ReadAllLines(path)
For Each line As String In lines
    ' This breaks when CSV fields contain commas inside quotes
    Dim fields As String() = line.Split(","c)
    For Each field As String In fields
        Console.Write(field.Trim() & vbTab)
    Next
    Console.WriteLine()
Next
$vbLabelText   $csharpLabel

輸入

Read CSV .NET: The Simplest C# Approach Using IronXL: Image 4 - CSV Input

輸出

Read CSV .NET: The Simplest C# Approach Using IronXL: Image 5 - Manual CSV Parsing Output

當CSV字段包含嵌入的逗號在引號字串內時,手動方法會失敗——這是地址字段或描述中的常見情況。 正確讀取文件需要處理引用字段、轉義引號、多行值和不同的編碼。 自己編寫解析器意味著需要建立StreamReader、實現狀態機邏輯並自己管理整個讀取過程。 這對於應該是一行程式碼的事情來說是相當多的樣板程式碼。

IronXL替代方法自動處理所有邊界情況:

using IronXL;

// IronXL approach -- handles all edge cases automatically
WorkBook workbook = WorkBook.LoadCSV("data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ",");
var records = workbook.DefaultWorkSheet.Rows;
foreach (var row in records)
{
    foreach (var cell in row)
    {
        Console.Write(cell.Value + "\t");
    }
    Console.WriteLine();
}
using IronXL;

// IronXL approach -- handles all edge cases automatically
WorkBook workbook = WorkBook.LoadCSV("data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ",");
var records = workbook.DefaultWorkSheet.Rows;
foreach (var row in records)
{
    foreach (var cell in row)
    {
        Console.Write(cell.Value + "\t");
    }
    Console.WriteLine();
}
Imports IronXL

' IronXL approach -- handles all edge cases automatically
Dim workbook As WorkBook = WorkBook.LoadCSV("data.csv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:=",")
Dim records = workbook.DefaultWorkSheet.Rows
For Each row In records
    For Each cell In row
        Console.Write(cell.Value & vbTab)
    Next
    Console.WriteLine()
Next
$vbLabelText   $csharpLabel

WorkBook類在內部管理解析的複雜性,讓您專注於資料而不是提取它。 您可以在IronXL功能概覽中閱讀有關IronXL完整功能的更多資訊。

您如何處理不同的CSV分隔符?

CSV文件並不總是使用逗號作為分隔符。 歐洲系統的導出常常使用分號,因為逗號出現在小數數字中。 制表符分隔值(TSV)和管道分隔文件經常出現在各種應用程式和遺留系統的資料導出中。

using IronXL;

// Reading a semicolon-delimited file (common in European exports)
WorkBook euroData = WorkBook.LoadCSV("german_report.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ";");
// Reading a tab-separated file
WorkBook tsvData = WorkBook.LoadCSV("exported_data.tsv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "\t");
// Reading a pipe-delimited file
WorkBook pipeData = WorkBook.LoadCSV("legacy_system.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "|");
// Access data identically regardless of original delimiter
WorkSheet sheet = euroData.DefaultWorkSheet;
int rowsCount = sheet.RowCount;
Console.WriteLine($"Loaded {rowsCount} rows with {sheet.ColumnCount} CSV columns");
using IronXL;

// Reading a semicolon-delimited file (common in European exports)
WorkBook euroData = WorkBook.LoadCSV("german_report.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ";");
// Reading a tab-separated file
WorkBook tsvData = WorkBook.LoadCSV("exported_data.tsv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "\t");
// Reading a pipe-delimited file
WorkBook pipeData = WorkBook.LoadCSV("legacy_system.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "|");
// Access data identically regardless of original delimiter
WorkSheet sheet = euroData.DefaultWorkSheet;
int rowsCount = sheet.RowCount;
Console.WriteLine($"Loaded {rowsCount} rows with {sheet.ColumnCount} CSV columns");
Imports IronXL

' Reading a semicolon-delimited file (common in European exports)
Dim euroData As WorkBook = WorkBook.LoadCSV("german_report.csv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:=";")
' Reading a tab-separated file
Dim tsvData As WorkBook = WorkBook.LoadCSV("exported_data.tsv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:=vbTab)
' Reading a pipe-delimited file
Dim pipeData As WorkBook = WorkBook.LoadCSV("legacy_system.csv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:="|")
' Access data identically regardless of original delimiter
Dim sheet As WorkSheet = euroData.DefaultWorkSheet
Dim rowsCount As Integer = sheet.RowCount
Console.WriteLine($"Loaded {rowsCount} rows with {sheet.ColumnCount} CSV columns")
$vbLabelText   $csharpLabel

LoadCSV中接受任何單一字元或轉義序列作為欄位分隔符。 制表符字元使用\t轉義序列。 載入後,資料結構保持一致,無論原始格式如何,使得處理來自多個來源且具有不同分隔符的CSV文件變得容易。 大多數CSV文件的預設值是逗號,但這種靈活性可以處理項目遇到的任何變化。

輸入

Read CSV .NET: The Simplest C# Approach Using IronXL: Image 6 - Semicolon-delimited CSV File Input

輸出

Read CSV .NET: The Simplest C# Approach Using IronXL: Image 7 - Semicolon-delimited Output

ColumnCount屬性提供快速驗證文件是否正確載入——在使用不熟悉的資料源或在ASP.NET Core應用程式中驗證使用者上傳時特別有用。

編碼考量

當閱讀包含非ASCII字元的文件時,例如法語或德語資料中的帶重音字母,IronXL會自動從文件的字節序標記(BOM)中讀取編碼。 對於沒有BOM的文件,您可能需要在源頭驗證編碼。 Microsoft的文件編碼文件為.NET中的編碼型別提供了全面參考。

轉換CSV到DataTable的最佳方法是什麼?

將CSV資料轉換為DataTable使得與資料庫操作整合、UI應用程式中的資料綁定和LINQ查詢成為可能。 ToDataTable方法通過單次呼叫執行此轉換。

using IronXL;
using System.Data;

// Load CSV and convert to DataTable
WorkBook workbook = WorkBook.LoadCSV("customers.csv", ExcelFileFormat.XLSX, ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert worksheet to DataTable -- true parameter uses CSV header as column names
DataTable dataTable = sheet.ToDataTable(true);
// DataTable is now ready for database operations, binding, or LINQ queries
Console.WriteLine($"DataTable created with {dataTable.Columns.Count} columns:");
foreach (DataColumn column in dataTable.Columns)
{
    // Property names from CSV header become column names
    Console.WriteLine($"  - {column.ColumnName}");
}
Console.WriteLine($"\nTotal records: {dataTable.Rows.Count}");
// Access data using standard DataTable syntax
foreach (DataRow row in dataTable.Rows)
{
    // Access by column index or name attribute
    string name = row["Name"].ToString();
    string email = row["Email"].ToString();
    Console.WriteLine($"Customer: {name}, Email: {email}");
}
using IronXL;
using System.Data;

// Load CSV and convert to DataTable
WorkBook workbook = WorkBook.LoadCSV("customers.csv", ExcelFileFormat.XLSX, ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Convert worksheet to DataTable -- true parameter uses CSV header as column names
DataTable dataTable = sheet.ToDataTable(true);
// DataTable is now ready for database operations, binding, or LINQ queries
Console.WriteLine($"DataTable created with {dataTable.Columns.Count} columns:");
foreach (DataColumn column in dataTable.Columns)
{
    // Property names from CSV header become column names
    Console.WriteLine($"  - {column.ColumnName}");
}
Console.WriteLine($"\nTotal records: {dataTable.Rows.Count}");
// Access data using standard DataTable syntax
foreach (DataRow row in dataTable.Rows)
{
    // Access by column index or name attribute
    string name = row["Name"].ToString();
    string email = row["Email"].ToString();
    Console.WriteLine($"Customer: {name}, Email: {email}");
}
Imports IronXL
Imports System.Data

' Load CSV and convert to DataTable
Dim workbook As WorkBook = WorkBook.LoadCSV("customers.csv", ExcelFileFormat.XLSX, ",")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Convert worksheet to DataTable -- true parameter uses CSV header as column names
Dim dataTable As DataTable = sheet.ToDataTable(True)
' DataTable is now ready for database operations, binding, or LINQ queries
Console.WriteLine($"DataTable created with {dataTable.Columns.Count} columns:")
For Each column As DataColumn In dataTable.Columns
    ' Property names from CSV header become column names
    Console.WriteLine($"  - {column.ColumnName}")
Next
Console.WriteLine(vbCrLf & $"Total records: {dataTable.Rows.Count}")
' Access data using standard DataTable syntax
For Each row As DataRow In dataTable.Rows
    ' Access by column index or name attribute
    Dim name As String = row("Name").ToString()
    Dim email As String = row("Email").ToString()
    Console.WriteLine($"Customer: {name}, Email: {email}")
Next
$vbLabelText   $csharpLabel

false)。 當設置為row["Name"]等列名稱存取資料。

使用DataTable進行資料庫和UI整合

此轉換在需要使用SqlBulkCopy進行資料庫批量插入、填充Windows Forms應用程式中的DataGridView控件或利用LINQ表達式進行複雜資料轉換的情況下顯得特別有價值。 DataTable格式也自然地與Entity Framework和其他ORM工具在您的.NET Core Web API項目中整合。 您可以在IronXL DataTable指導中閱讀有關DataTable導出模式的更多資訊。

對於在.NET中處理表格資料的其他模式,Microsoft的ADO.NET概覽是一個權威性的參考。

您如何將CSV文件轉換為Excel格式?

IronXL的一個突出功能是將CSV資料轉換為正確的Excel格式。 這使得在原本平面的CSV資料中新增公式、格式、圖表和多個工作表成為可能——這是CSV輸出所無法達到的。

using IronXL;

// Load CSV data from file path
string path = "quarterly_sales.csv";
WorkBook workbook = WorkBook.LoadCSV(path, ExcelFileFormat.XLSX, ",");
// Save as Excel XLSX format -- creates a new Excel file
workbook.SaveAs("quarterly_sales.xlsx");
// Alternative: Save as legacy XLS format for older Excel versions
workbook.SaveAs("quarterly_sales.xls");
Console.WriteLine("CSV successfully converted to Excel format");
using IronXL;

// Load CSV data from file path
string path = "quarterly_sales.csv";
WorkBook workbook = WorkBook.LoadCSV(path, ExcelFileFormat.XLSX, ",");
// Save as Excel XLSX format -- creates a new Excel file
workbook.SaveAs("quarterly_sales.xlsx");
// Alternative: Save as legacy XLS format for older Excel versions
workbook.SaveAs("quarterly_sales.xls");
Console.WriteLine("CSV successfully converted to Excel format");
Imports IronXL

' Load CSV data from file path
Dim path As String = "quarterly_sales.csv"
Dim workbook As WorkBook = WorkBook.LoadCSV(path, ExcelFileFormat.XLSX, ","c)
' Save as Excel XLSX format -- creates a new Excel file
workbook.SaveAs("quarterly_sales.xlsx")
' Alternative: Save as legacy XLS format for older Excel versions
workbook.SaveAs("quarterly_sales.xls")
Console.WriteLine("CSV successfully converted to Excel format")
$vbLabelText   $csharpLabel

SaveAs方法根據文件擴展自動確定輸出格式。 XLSX建立現代Office Open XML文件,與Excel 2007及以後版本相容,而XLS則為較舊的應用程式生成傳統的二進制交換文件格式文件。

輸入

Read CSV .NET: The Simplest C# Approach Using IronXL: Image 8 - CSV Data

輸出

Read CSV .NET: The Simplest C# Approach Using IronXL: Image 9 - Excel Output

Read CSV .NET: The Simplest C# Approach Using IronXL: Image 10 - CSV to Excel Output

當需要增強資料庫或API的CSV導出以便在分發給使用者之前提升其效用時,此工作流程顯得尤其有用。 轉換後,Excel文件可以接收其他格式設置、公式或與其他工作表組合——所有這些都可以通過IronXL的編輯功能以程式化方式完成。 這個過程完全可腳本化,適合用於自動化報告管道或定期任務。

您如何存取CSV資料中的特定單元格值?

除了遍歷所有記錄,IronXL提供了直接的單元格存取,使用熟悉的Excel樣式地址。 這使得跨不同資料型別的資料提取和型別安全值檢索成為可能。

using IronXL;

WorkBook workbook = WorkBook.LoadCSV("inventory.csv", ExcelFileFormat.XLSX, ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Access specific cells using Excel-style addresses by index
string productName = sheet["A2"].StringValue;
int quantity = sheet["B2"].IntValue;
decimal price = sheet["C2"].DecimalValue;
Console.WriteLine($"Product: {productName}");
Console.WriteLine($"Quantity: {quantity}");
Console.WriteLine($"Price: ${price:F2}");
// Access a range of cells -- return records from column A
var productRange = sheet["A2:A10"];
Console.WriteLine("\nAll products:");
foreach (var cell in productRange)
{
    Console.WriteLine($"  - {cell.StringValue}");
}
using IronXL;

WorkBook workbook = WorkBook.LoadCSV("inventory.csv", ExcelFileFormat.XLSX, ",");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Access specific cells using Excel-style addresses by index
string productName = sheet["A2"].StringValue;
int quantity = sheet["B2"].IntValue;
decimal price = sheet["C2"].DecimalValue;
Console.WriteLine($"Product: {productName}");
Console.WriteLine($"Quantity: {quantity}");
Console.WriteLine($"Price: ${price:F2}");
// Access a range of cells -- return records from column A
var productRange = sheet["A2:A10"];
Console.WriteLine("\nAll products:");
foreach (var cell in productRange)
{
    Console.WriteLine($"  - {cell.StringValue}");
}
Imports IronXL

Dim workbook As WorkBook = WorkBook.LoadCSV("inventory.csv", ExcelFileFormat.XLSX, ",")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Access specific cells using Excel-style addresses by index
Dim productName As String = sheet("A2").StringValue
Dim quantity As Integer = sheet("B2").IntValue
Dim price As Decimal = sheet("C2").DecimalValue
Console.WriteLine($"Product: {productName}")
Console.WriteLine($"Quantity: {quantity}")
Console.WriteLine($"Price: ${price:F2}")
' Access a range of cells -- return records from column A
Dim productRange = sheet("A2:A10")
Console.WriteLine(vbCrLf & "All products:")
For Each cell In productRange
    Console.WriteLine($"  - {cell.StringValue}")
Next
$vbLabelText   $csharpLabel

單元格地址遵循Excel慣例,其中字母表示CSV列(A, B, C),數字表示行索引位置(1, 2, 3)。 Cell類提供了型別特定的存取器,包括DateTimeValue。 這些存取器自動處理解析和轉換,消除了全部將所有內容儲存為字串值所需的手動型別轉換。

使用像A2:A10這樣的符號進行範圍選擇,返回一個支持迭代、聚合函式和批量操作的Range物件。 當從大型CSV文件中提取特定列或矩形資料區域時,這被證明是有用的。 例如,您可能會從特定列構建值列表或將過濾資料寫入另一個文件。參見IronXL範圍指南了解更多模式。

您如何在讀取CSV文件時處理錯誤?

生產應用程式需要在文件操作周圍使用防御程式碼。 CSV讀取可能因多個原因而失敗:文件不存在、存取被拒絕、資料格式有誤,或記憶體對非常大的文件不夠。 在try/catch塊中包裹IronXL調用並在載入前驗證路徑,能在各種環境中提供可靠的行為。

using IronXL;
using System.IO;

string filePath = "customers.csv";
if (!File.Exists(filePath))
{
    Console.WriteLine($"File not found: {filePath}");
    return;
}
try
{
    WorkBook workbook = WorkBook.LoadCSV(filePath, ExcelFileFormat.XLSX, ",");
    WorkSheet sheet = workbook.DefaultWorkSheet;
    DataTable dataTable = sheet.ToDataTable(true);
    Console.WriteLine($"Loaded {dataTable.Rows.Count} records successfully.");
}
catch (IronXL.Exceptions.IronXLException ex)
{
    Console.WriteLine($"IronXL parsing error: {ex.Message}");
}
catch (IOException ex)
{
    Console.WriteLine($"File access error: {ex.Message}");
}
catch (Exception ex)
{
    Console.WriteLine($"Unexpected error: {ex.Message}");
}
using IronXL;
using System.IO;

string filePath = "customers.csv";
if (!File.Exists(filePath))
{
    Console.WriteLine($"File not found: {filePath}");
    return;
}
try
{
    WorkBook workbook = WorkBook.LoadCSV(filePath, ExcelFileFormat.XLSX, ",");
    WorkSheet sheet = workbook.DefaultWorkSheet;
    DataTable dataTable = sheet.ToDataTable(true);
    Console.WriteLine($"Loaded {dataTable.Rows.Count} records successfully.");
}
catch (IronXL.Exceptions.IronXLException ex)
{
    Console.WriteLine($"IronXL parsing error: {ex.Message}");
}
catch (IOException ex)
{
    Console.WriteLine($"File access error: {ex.Message}");
}
catch (Exception ex)
{
    Console.WriteLine($"Unexpected error: {ex.Message}");
}
Imports IronXL
Imports System.IO

Dim filePath As String = "customers.csv"
If Not File.Exists(filePath) Then
    Console.WriteLine($"File not found: {filePath}")
    Return
End If

Try
    Dim workbook As WorkBook = WorkBook.LoadCSV(filePath, ExcelFileFormat.XLSX, ",")
    Dim sheet As WorkSheet = workbook.DefaultWorkSheet
    Dim dataTable As DataTable = sheet.ToDataTable(True)
    Console.WriteLine($"Loaded {dataTable.Rows.Count} records successfully.")
Catch ex As IronXL.Exceptions.IronXLException
    Console.WriteLine($"IronXL parsing error: {ex.Message}")
Catch ex As IOException
    Console.WriteLine($"File access error: {ex.Message}")
Catch ex As Exception
    Console.WriteLine($"Unexpected error: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

CSV資料的驗證模式

除了捕獲異常,驗證載入後的行和列數目有助於檢測截斷文件或意外的架構更改。 檢查sheet.RowCount對預期最小值,或驗證第一行中是否存在特定列標題,可以在資料問題在管道下游傳播之前早期檢出。 Microsoft的異常處理指南涵蓋了結構化錯誤處理的最佳實踐。

對於處理使用者上傳CSV文件的應用程式,請始終在載入前驗證文件大小,清理文件名,並限制在上傳端點允許的內容型別。 這些預防措施可防止來自超大型文件的資源耗盡並保護免受路徑遍歷攻擊的侵害。

IronXL包含自己的異常型別IronXL.Exceptions.IronXLException以針對庫特定錯誤,使得從常規輸入/輸出問題中區分解析故障變得簡單易行。 您可以在IronXL API參考中找到更多詳情。

您如何在讀取大型CSV文件時避免記憶體問題?

對於包含數十萬行的文件,一次性將整個資料集載入到記憶體中可能是不切實際的。 IronXL將整個文件讀入WorkBook物件中,這會讓所有資料保留在記憶體中。 對於大規模ETL(提取、轉換、載入)場景,實際策略是在載入前通過拆分源文件或從StreamReader流中流出行並將塊寫入單獨的工作簿來批量處理CSV。

IronXL關於讀取Excel文件的文件涵蓋了大型工作負載的性能考量。 對於特定的CSV而言,由於CSV格式的逐行結構意味著簡單的File.ReadAllLines與手動分批方式在資料集對單個記憶體載入來說過大時具有可預測的記憶體佔用。

IronXL與其他CSV庫的比較

IronXL並不是.NET唯一的CSV庫。 CsvHelper是一個廣泛使用的開源替代品,專注於流式、記錄映射和基於屬性的配置。 關鍵差異在於範圍:CsvHelper專注於CSV,而IronXL則處理整個電子表格生態系統——通過一個統一的API讀取、寫入和轉換XLSX、XLS、CSV和其他格式。 如果您的應用程式已經使用IronXL進行Excel操作,那麼通過同一個程式庫處理CSV可避免額外的依賴。 如果CSV是您唯一處理的格式並且您需要流支持,那麼流式CSV庫可能會更適合您。

IronXL與CsvHelper:在.NET中CSV讀取的關鍵差異
功能 IronXL CsvHelper
CSV讀取
Excel (XLSX/XLS)支持
流式傳輸大型文件 僅限記憶體 是(流式傳輸)
自定義分隔符 是(listDelimiter) 是(配置)
DataTable轉換 內建(ToDataTable) 手動映射
授權 商業 開源(MS-PL)

您接下來的步驟是什麼?

在.NET中讀取CSV文件時,使用正確的方法只需很少的精力。 IronXL的LoadCSV方法自動處理解析的複雜性,支持各種分隔符,提供對結構化資料的即時存取,並通過單個方法調用轉換為Excel或DataTable。 無論您是在構建ASP.NET Core應用程式、.NET Core Web API還是控制台項目,該庫都從頭到尾簡化了CSV處理。

探索更多IronXL功能以擴展您在這裡所學的知識:

開始免費試用來體驗IronXL如何簡化在您的.NET項目中讀取CSV文件。 對於生產部署,授權選項包括永久使用權和一年的支持。

常見問題

在C#中讀取CSV檔案的最簡單方法是什麼?

在C#中讀取CSV檔案的最簡單方法是使用IronXL,它提供了一種直接且高效的方法來處理CSV資料。

IronXL能夠有效處理大型CSV檔案嗎?

是的,IronXL被設計成可以處理大型CSV檔案,使其適合於不會有性能問題的情況下處理大量資料集。

IronXL與.NET應用程式相容嗎?

IronXL完全相容於.NET應用程式,允許開發者輕鬆地將CSV閱讀功能整合到他們的C#專案中。

IronXL支援讀取具有不同分隔符的CSV檔案嗎?

IronXL支援讀取採用各種分隔符的CSV檔案,提供靈活性來處理不同格式的檔案。

IronXL可以解析具有標題的CSV檔案嗎?

是的,IronXL可以解析具有標題的CSV檔案,使您能夠輕鬆地透過欄位名稱存取資料。

IronXL如何簡化CSV資料操作?

IronXL透過提供直覺的方法來讀取、編輯和寫入CSV資料直接在C#中,簡化CSV資料操作。

IronXL是否支援異步讀取CSV檔案?

IronXL提供對異步操作的支援,使您能夠在不阻塞主應用程式執行緒下讀取CSV檔案。

IronXL可以將CSV資料轉換為Excel格式嗎?

IronXL可以將CSV資料轉換為Excel格式,使您能夠利用Excel的特性進行資料分析和展示。

IronXL在讀取CSV檔案時有任何依賴嗎?

IronXL是一個獨立的程式庫,不需要外部依賴來讀取CSV檔案,這簡化了專案中的設置過程。

IronXL可以用來從CSV導出資料到其他格式嗎?

是的,IronXL可以將資料從CSV導出至多種格式,包括Excel,提供了資料處理和報告的靈活性。

Curtis Chau
技術作家

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

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

Iron 支援團隊

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