跳過到頁腳內容
使用 IRONXL

C# CSV檔案閱讀器:使用IronXL解析和處理CSV資料。

CSV(逗號分隔值)文件在商業應用程式中無所不在,從財務報告到客戶資料匯出,無所不包。 CSV 格式表面上看起來很簡單,但在生產程式碼中解析它時,如果處理帶引號的欄位、多種分隔符號類型、嵌入式換行符以及需要將原始文字轉換為強類型的.NET對象,就會很快變得困難。 IronXL是一個.NET函式庫,提供企業級 CSV 處理功能,讓開發人員可以使用最少的程式碼將 CSV 資料轉換為 Excel、XML 或其他格式。

本指南將帶您了解IronXL如何作為 C# CSV 檔案讀取器工作,以及如何在.NET 10 應用程式中實現它。 使用免費試用許可證親自體驗IronXL ,並跟隨教程了解它是如何處理 CSV 和 Excel 任務的。

如何安裝IronXL以讀取 CSV 檔案?

將IronXL整合到您的專案中只需片刻。 您可以透過 Visual Studio 中的NuGet套件管理器來安裝它,也可以透過命令列使用.NET CLI 或 PowerShell 中的NuGet套件管理器控制台進行安裝。 兩種方法都會安裝相同的軟體包,並且適用於任何.NET 10 專案類型。

# .NET CLI
dotnet add package IronXl.Excel

# NuGet Package Manager Console
Install-Package IronXl.Excel
# .NET CLI
dotnet add package IronXl.Excel

# NuGet Package Manager Console
Install-Package IronXl.Excel
SHELL

有關安裝選項和配置的更多詳細信息,請參閱IronXL安裝文件

安裝完成後,讀取第一個 CSV 檔案只需要很少的程式碼。 以下範例使用.NET 10 頂層語句:

using IronXL;

// Load CSV file
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a specific cell
string cellValue = sheet["A1"].StringValue;

// Iterate through all rows and cells
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.WriteLine(cell.StringValue);
    }
}
using IronXL;

// Load CSV file
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a specific cell
string cellValue = sheet["A1"].StringValue;

// Iterate through all rows and cells
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.WriteLine(cell.StringValue);
    }
}
Imports IronXL

' Load CSV file
Dim workbook As WorkBook = WorkBook.LoadCSV("data.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Read a specific cell
Dim cellValue As String = sheet("A1").StringValue

' Iterate through all rows and cells
For Each row In sheet.Rows
    For Each cell In row
        Console.WriteLine(cell.StringValue)
    Next
Next
$vbLabelText   $csharpLabel

WorkBook.LoadCSV方法處理標頭識別、建立內部資料結構並執行記憶體高效的解析,從而從第一行程式碼開始簡化您的資料管理。

C# CSV 檔案讀取器教學:使用IronXL解析並轉換 CSV 資料:圖 1 - IronXL NuGet安裝

如何讀取帶有自訂分隔符號的CSV檔案?

實際的 CSV 檔案並不總是使用逗號。 分號、垂直線和製表符是常見的替代符號,尤其是在逗號用作小數位分隔符號的國際資料集中。 IronXL透過其靈活的加載選項處理任何分隔符號。

using IronXL;

// Load CSV with semicolon delimiter (common in European data exports)
WorkBook workbook = WorkBook.LoadCSV("european-data.csv",
    fileFormat: ExcelFileFormat.XLSX,
    list分隔符: ";");

// Load tab-separated values (TSV)
WorkBook tsvWorkbook = WorkBook.LoadCSV("export_data.tsv",
    fileFormat: ExcelFileFormat.XLSX,
    list分隔符: "\t");

// Load pipe-delimited file
WorkBook pipeWorkbook = WorkBook.LoadCSV("log_export.csv",
    fileFormat: ExcelFileFormat.XLSX,
    list分隔符: "|");

// Access data normally after loading
WorkSheet sheet = workbook.DefaultWorkSheet;
decimal totalSales = sheet["B2:B10"].Sum();

Console.WriteLine($"Total sales: {totalSales}");
using IronXL;

// Load CSV with semicolon delimiter (common in European data exports)
WorkBook workbook = WorkBook.LoadCSV("european-data.csv",
    fileFormat: ExcelFileFormat.XLSX,
    list分隔符: ";");

// Load tab-separated values (TSV)
WorkBook tsvWorkbook = WorkBook.LoadCSV("export_data.tsv",
    fileFormat: ExcelFileFormat.XLSX,
    list分隔符: "\t");

// Load pipe-delimited file
WorkBook pipeWorkbook = WorkBook.LoadCSV("log_export.csv",
    fileFormat: ExcelFileFormat.XLSX,
    list分隔符: "|");

// Access data normally after loading
WorkSheet sheet = workbook.DefaultWorkSheet;
decimal totalSales = sheet["B2:B10"].Sum();

Console.WriteLine($"Total sales: {totalSales}");
Imports IronXL

' Load CSV with semicolon delimiter (common in European data exports)
Dim workbook As WorkBook = WorkBook.LoadCSV("european-data.csv",
    fileFormat:=ExcelFileFormat.XLSX,
    list分隔符:=";")

' Load tab-separated values (TSV)
Dim tsvWorkbook As WorkBook = WorkBook.LoadCSV("export_data.tsv",
    fileFormat:=ExcelFileFormat.XLSX,
    list分隔符:=vbTab)

' Load pipe-delimited file
Dim pipeWorkbook As WorkBook = WorkBook.LoadCSV("log_export.csv",
    fileFormat:=ExcelFileFormat.XLSX,
    list分隔符:="|")

' Access data normally after loading
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
Dim totalSales As Decimal = sheet("B2:B10").Sum()

Console.WriteLine($"Total sales: {totalSales}")
$vbLabelText   $csharpLabel

list分隔符 參數接受任何字串,讓您可以完全控制解析行為。 IronXL在解析過程中保留列值和資料類型-數值仍然是數字,日期仍然是 DateTime 對象,公式保持其關係。

對於格式不一致的文件,IronXL 的錯誤處理機制可以管理格式錯誤的行,而不會導致應用程式崩潰,因此即使個別行有問題,有效資料也能繼續處理。

C# CSV 檔案讀取器教學:使用IronXL解析和轉換 CSV 資料:圖 2 - 入門範例輸出

支援的文件格式和分隔符

IronXL在讀取 CSV 檔案時支援載入以下分隔符號類型:

IronXL 的 LoadCSV 方法支援的常​​用分隔符號類型
分隔符 特點 常見用例
逗號 `,` 標準 CSV,美國地區匯出
分號 `;` 歐洲本地化導出(以逗號作為小數分隔符號)
標籤頁 `\t` 製表符分隔值 (TSV) 資料庫匯出
管道 `|` 日誌檔、系統匯出
自訂字串 任何 專有資料格式,多字元分隔符

如何將 CSV 資料解析為 C# 物件?

將 CSV 行轉換為強型別物件可以簡化資料處理並支援 LINQ 操作。 IronXL透過其蜂窩接入方法使這種映射變得簡單。 以下程式碼示範如何使用.NET 10 頂級語句將 CSV 檔案對應到類型化物件清單:

using IronXL;

// Define a typed model matching your CSV structure
public record Product(string Name, decimal Price, int Stock, DateTime? LastUpdated);

// Load and parse CSV file
WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

var products = new List<Product>();

// Start from row 2 to skip the header row
for (int row = 2; row <= sheet.RowCount; row++)
{
    products.Add(new Product(
        Name: sheet[$"A{row}"].StringValue,
        Price: sheet[$"B{row}"].DecimalValue,
        Stock: sheet[$"C{row}"].IntValue,
        LastUpdated: sheet[$"D{row}"].DateTimeValue
    ));
}

// Use LINQ for analysis after loading
var lowStock = products.Where(p => p.Stock < 10).ToList();
var highValue = products.Where(p => p.Price > 100m).OrderByDescending(p => p.Price).ToList();

Console.WriteLine($"Products with low stock: {lowStock.Count}");
Console.WriteLine($"High-value products: {highValue.Count}");
using IronXL;

// Define a typed model matching your CSV structure
public record Product(string Name, decimal Price, int Stock, DateTime? LastUpdated);

// Load and parse CSV file
WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

var products = new List<Product>();

// Start from row 2 to skip the header row
for (int row = 2; row <= sheet.RowCount; row++)
{
    products.Add(new Product(
        Name: sheet[$"A{row}"].StringValue,
        Price: sheet[$"B{row}"].DecimalValue,
        Stock: sheet[$"C{row}"].IntValue,
        LastUpdated: sheet[$"D{row}"].DateTimeValue
    ));
}

// Use LINQ for analysis after loading
var lowStock = products.Where(p => p.Stock < 10).ToList();
var highValue = products.Where(p => p.Price > 100m).OrderByDescending(p => p.Price).ToList();

Console.WriteLine($"Products with low stock: {lowStock.Count}");
Console.WriteLine($"High-value products: {highValue.Count}");
Imports IronXL

' Define a typed model matching your CSV structure
Public Class Product
    Public Property Name As String
    Public Property Price As Decimal
    Public Property Stock As Integer
    Public Property LastUpdated As DateTime?

    Public Sub New(name As String, price As Decimal, stock As Integer, lastUpdated As DateTime?)
        Me.Name = name
        Me.Price = price
        Me.Stock = stock
        Me.LastUpdated = lastUpdated
    End Sub
End Class

' Load and parse CSV file
Dim workbook As WorkBook = WorkBook.LoadCSV("inventory.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

Dim products As New List(Of Product)()

' Start from row 2 to skip the header row
For row As Integer = 2 To sheet.RowCount
    products.Add(New Product(
        Name:=sheet($"A{row}").StringValue,
        Price:=sheet($"B{row}").DecimalValue,
        Stock:=sheet($"C{row}").IntValue,
        LastUpdated:=sheet($"D{row}").DateTimeValue
    ))
Next

' Use LINQ for analysis after loading
Dim lowStock = products.Where(Function(p) p.Stock < 10).ToList()
Dim highValue = products.Where(Function(p) p.Price > 100D).OrderByDescending(Function(p) p.Price).ToList()

Console.WriteLine($"Products with low stock: {lowStock.Count}")
Console.WriteLine($"High-value products: {highValue.Count}")
$vbLabelText   $csharpLabel

IronXL 的類型化值屬性 -- StringValue, DecimalValue, IntValue, DateTimeValue -- 安全地處理轉換,為無效資料傳回預設值,而不是拋出異常。 這種防禦性方法確保應用程式能夠處理不完美的資料而不會中斷運行。 它與C# 記錄類型自然地搭配使用,C# 記錄類型是在 C# 9 中引入的,它為映射的 CSV 行提供了一個簡潔、不可變的資料模型。

IronXL功能頁面提供了可用於讀取儲存格資料的值存取器類型的完整概述。

C# CSV 檔案讀取器教學:使用IronXL解析與轉換 CSV 資料:圖 3 - 讀取不同分隔符號的輸出

如何使用 LINQ 篩選和查詢 CSV 資料?

將 CSV 資料載入 WorkSheet 後,您可以使用範圍選擇器對其進行操作,或將其轉換為物件以進行 LINQ 查詢。 對於簡單的列操作,基於範圍的存取是最直接的方法:

using IronXL;

WorkBook workbook = WorkBook.LoadCSV("sales-data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read entire columns using range notation
var productNames = sheet["A2:A100"]
    .Select(cell => cell.StringValue)
    .Where(name => !string.IsNullOrEmpty(name))
    .ToList();

// Aggregate numeric columns directly
decimal totalRevenue = sheet["C2:C100"].Sum();
decimal averageOrder = sheet["C2:C100"].Avg();

Console.WriteLine($"Products loaded: {productNames.Count}");
Console.WriteLine($"Total revenue: {totalRevenue:C}");
Console.WriteLine($"Average order value: {averageOrder:C}");
using IronXL;

WorkBook workbook = WorkBook.LoadCSV("sales-data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read entire columns using range notation
var productNames = sheet["A2:A100"]
    .Select(cell => cell.StringValue)
    .Where(name => !string.IsNullOrEmpty(name))
    .ToList();

// Aggregate numeric columns directly
decimal totalRevenue = sheet["C2:C100"].Sum();
decimal averageOrder = sheet["C2:C100"].Avg();

Console.WriteLine($"Products loaded: {productNames.Count}");
Console.WriteLine($"Total revenue: {totalRevenue:C}");
Console.WriteLine($"Average order value: {averageOrder:C}");
Imports IronXL

Dim workbook As WorkBook = WorkBook.LoadCSV("sales-data.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Read entire columns using range notation
Dim productNames = sheet("A2:A100") _
    .Select(Function(cell) cell.StringValue) _
    .Where(Function(name) Not String.IsNullOrEmpty(name)) _
    .ToList()

' Aggregate numeric columns directly
Dim totalRevenue As Decimal = sheet("C2:C100").Sum()
Dim averageOrder As Decimal = sheet("C2:C100").Avg()

Console.WriteLine($"Products loaded: {productNames.Count}")
Console.WriteLine($"Total revenue: {totalRevenue:C}")
Console.WriteLine($"Average order value: {averageOrder:C}")
$vbLabelText   $csharpLabel

這種基於範圍的方法避免了對簡單聚合進行逐行迭代,從而提高了處理較大檔案的效能。 有關支援的範圍操作的完整列表,請參閱IronXL文件

如何在C#中將CSV檔案轉換為Excel格式?

許多業務流程需要將 CSV 資料轉換為 Excel 格式,以便進行進階分析、格式化或散佈。 IronXL讓這種轉換變得簡單,同時也能保持所有資料的完整性。

using IronXL;

// Load CSV file
WorkBook csvWorkbook = WorkBook.LoadCSV("monthly-report.csv");
WorkSheet sheet = csvWorkbook.DefaultWorkSheet;

// Apply formatting before saving
sheet["A1:D1"].Style.Font.Bold = true;
sheet["A1:D1"].Style.BackgroundColor = "#4472C4";
sheet["A1:D1"].Style.Font.Color = "#FFFFFF";

// Apply currency format to price column
sheet["B2:B1000"].FormatString = "$#,##0.00";

// Apply date format to date column
sheet["D2:D1000"].FormatString = "yyyy-MM-dd";

// Save as Excel with a single method call
csvWorkbook.SaveAs("monthly-report.xlsx");

Console.WriteLine("Conversion complete: monthly-report.xlsx");
using IronXL;

// Load CSV file
WorkBook csvWorkbook = WorkBook.LoadCSV("monthly-report.csv");
WorkSheet sheet = csvWorkbook.DefaultWorkSheet;

// Apply formatting before saving
sheet["A1:D1"].Style.Font.Bold = true;
sheet["A1:D1"].Style.BackgroundColor = "#4472C4";
sheet["A1:D1"].Style.Font.Color = "#FFFFFF";

// Apply currency format to price column
sheet["B2:B1000"].FormatString = "$#,##0.00";

// Apply date format to date column
sheet["D2:D1000"].FormatString = "yyyy-MM-dd";

// Save as Excel with a single method call
csvWorkbook.SaveAs("monthly-report.xlsx");

Console.WriteLine("Conversion complete: monthly-report.xlsx");
Imports IronXL

' Load CSV file
Dim csvWorkbook As WorkBook = WorkBook.LoadCSV("monthly-report.csv")
Dim sheet As WorkSheet = csvWorkbook.DefaultWorkSheet

' Apply formatting before saving
sheet("A1:D1").Style.Font.Bold = True
sheet("A1:D1").Style.BackgroundColor = "#4472C4"
sheet("A1:D1").Style.Font.Color = "#FFFFFF"

' Apply currency format to price column
sheet("B2:B1000").FormatString = "$#,##0.00"

' Apply date format to date column
sheet("D2:D1000").FormatString = "yyyy-MM-dd"

' Save as Excel with a single method call
csvWorkbook.SaveAs("monthly-report.xlsx")

Console.WriteLine("Conversion complete: monthly-report.xlsx")
$vbLabelText   $csharpLabel

轉換過程中保留了數值精度、日期格式和特殊字符,而這些內容通常會在手動轉換方法中造成問題。 IronXL會自動優化產生的 Excel 文件結構,建立高效的文件,即使包含大型資料集也能快速開啟。

為了更好地控制輸出格式,匯出操作指南涵蓋了 XLSX、XLS、CSV 和 PDF 匯出等選項。 您還可以學習如何編寫 Excel 文件以及如何從頭開始建立 Excel 文件

C# CSV 檔案讀取器教學:使用IronXL解析並轉換 CSV 資料:圖 4 - 解析 CSV 資料輸出

將 CSV 轉換為資料庫操作所需的資料集

當您需要將 CSV 資料載入到 DataSet 中以進行進一步處理或資料庫插入時, IronXL提供直接轉換支援。 《 Excel轉資料集指南》對此有詳細解釋:

using IronXL;
using System.Data;

WorkBook workbook = WorkBook.LoadCSV("customer-export.csv");

// Convert entire workbook to DataSet
DataSet dataSet = workbook.ToDataSet();

// The first sheet becomes the first Data標籤頁le
Data標籤頁le customer標籤頁le = dataSet.標籤頁les[0];

Console.WriteLine($"Rows loaded: {customer標籤頁le.Rows.Count}");
Console.WriteLine($"Columns: {customer標籤頁le.Columns.Count}");

// Process with standard ADO.NET
foreach (DataRow row in customer標籤頁le.Rows)
{
    string name = row["Name"]?.ToString() ?? string.Empty;
    string email = row["Email"]?.ToString() ?? string.Empty;
    Console.WriteLine($"Customer: {name} <{email}>");
}
using IronXL;
using System.Data;

WorkBook workbook = WorkBook.LoadCSV("customer-export.csv");

// Convert entire workbook to DataSet
DataSet dataSet = workbook.ToDataSet();

// The first sheet becomes the first Data標籤頁le
Data標籤頁le customer標籤頁le = dataSet.標籤頁les[0];

Console.WriteLine($"Rows loaded: {customer標籤頁le.Rows.Count}");
Console.WriteLine($"Columns: {customer標籤頁le.Columns.Count}");

// Process with standard ADO.NET
foreach (DataRow row in customer標籤頁le.Rows)
{
    string name = row["Name"]?.ToString() ?? string.Empty;
    string email = row["Email"]?.ToString() ?? string.Empty;
    Console.WriteLine($"Customer: {name} <{email}>");
}
Imports IronXL
Imports System.Data

Dim workbook As WorkBook = WorkBook.LoadCSV("customer-export.csv")

' Convert entire workbook to DataSet
Dim dataSet As DataSet = workbook.ToDataSet()

' The first sheet becomes the first DataTable
Dim customerTable As DataTable = dataSet.Tables(0)

Console.WriteLine($"Rows loaded: {customerTable.Rows.Count}")
Console.WriteLine($"Columns: {customerTable.Columns.Count}")

' Process with standard ADO.NET
For Each row As DataRow In customerTable.Rows
    Dim name As String = If(row("Name")?.ToString(), String.Empty)
    Dim email As String = If(row("Email")?.ToString(), String.Empty)
    Console.WriteLine($"Customer: {name} <{email}>")
Next
$vbLabelText   $csharpLabel

這種方法可以直接與.NET工作流程集成,並且在透過標準資料適配器將 CSV 資料推送到 SQL Server、SQLite 或其他關聯式資料庫時非常有用。 因為 DataSetData標籤頁le 是.NET核心類型,所以除了IronXL本身之外,此路徑不需要任何其他依賴項。

如何處理大型 CSV 檔案並進行效能最佳化?

處理大型 CSV 檔案(數萬行或更多)需要注意資料的存取方式和記憶體管理方式。 IronXL包含有助於處理大檔案場景的功能。

利用範圍運算提升效能

為了獲得處理大型資料集的最佳效能,請使用範圍操作而不是逐一存取單一儲存格。 IronXL 的內部引擎可以更有效率地處理範圍操作:

using IronXL;

WorkBook workbook = WorkBook.LoadCSV("large-dataset.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

int rowCount = sheet.RowCount;
int colCount = sheet.ColumnCount;

Console.WriteLine($"Dataset dimensions: {rowCount} rows x {colCount} columns");

// Efficient: read entire range at once
var allData = sheet[$"A1:{GetColumnLetter(colCount)}{rowCount}"]
    .Select(cell => cell.StringValue)
    .ToList();

// Efficient: aggregate a column without row-by-row iteration
decimal columnSum = sheet[$"B2:B{rowCount}"].Sum();

Console.WriteLine($"Column B total: {columnSum}");

static string GetColumnLetter(int col)
{
    string result = string.Empty;
    while (col > 0)
    {
        col--;
        result = (char)('A' + col % 26) + result;
        col /= 26;
    }
    return result;
}
using IronXL;

WorkBook workbook = WorkBook.LoadCSV("large-dataset.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

int rowCount = sheet.RowCount;
int colCount = sheet.ColumnCount;

Console.WriteLine($"Dataset dimensions: {rowCount} rows x {colCount} columns");

// Efficient: read entire range at once
var allData = sheet[$"A1:{GetColumnLetter(colCount)}{rowCount}"]
    .Select(cell => cell.StringValue)
    .ToList();

// Efficient: aggregate a column without row-by-row iteration
decimal columnSum = sheet[$"B2:B{rowCount}"].Sum();

Console.WriteLine($"Column B total: {columnSum}");

static string GetColumnLetter(int col)
{
    string result = string.Empty;
    while (col > 0)
    {
        col--;
        result = (char)('A' + col % 26) + result;
        col /= 26;
    }
    return result;
}
Imports IronXL

Dim workbook As WorkBook = WorkBook.LoadCSV("large-dataset.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

Dim rowCount As Integer = sheet.RowCount
Dim colCount As Integer = sheet.ColumnCount

Console.WriteLine($"Dataset dimensions: {rowCount} rows x {colCount} columns")

' Efficient: read entire range at once
Dim allData = sheet($"A1:{GetColumnLetter(colCount)}{rowCount}") _
    .Select(Function(cell) cell.StringValue) _
    .ToList()

' Efficient: aggregate a column without row-by-row iteration
Dim columnSum As Decimal = sheet($"B2:B{rowCount}").Sum()

Console.WriteLine($"Column B total: {columnSum}")

Private Shared Function GetColumnLetter(col As Integer) As String
    Dim result As String = String.Empty
    While col > 0
        col -= 1
        result = ChrW(AscW("A"c) + col Mod 26) & result
        col \= 26
    End While
    Return result
End Function
$vbLabelText   $csharpLabel

IronXL在載入 CSV 檔案時會自動處理文字編碼變體( UTF-8、UTF-16、ASCII ),確保列值中的國際字元無需額外配置即可正確顯示。 對於從 UTF-8 BOM 或其他編碼常見的地區系統匯出的檔案而言,這一點尤其重要。

針對不受信任的 CSV 來源的錯誤處理

在處理來自不可信或不穩定來源的 CSV 檔案時,將操作包裝在 try-catch 區塊中可以提供額外的安全性:

using IronXL;

string filePath = "user-uploaded-data.csv";

try
{
    WorkBook workbook = WorkBook.LoadCSV(filePath);
    WorkSheet sheet = workbook.DefaultWorkSheet;

    Console.WriteLine($"Loaded {sheet.RowCount} rows from {filePath}");

    for (int row = 2; row <= sheet.RowCount; row++)
    {
        string value = sheet[$"A{row}"].StringValue;
        if (!string.IsNullOrWhiteSpace(value))
        {
            Console.WriteLine(value);
        }
    }
}
catch (IronXl.Exceptions.IronXLException ex)
{
    Console.WriteLine($"IronXL error reading {filePath}: {ex.Message}");
}
catch (IOException ex)
{
    Console.WriteLine($"File access error: {ex.Message}");
}
using IronXL;

string filePath = "user-uploaded-data.csv";

try
{
    WorkBook workbook = WorkBook.LoadCSV(filePath);
    WorkSheet sheet = workbook.DefaultWorkSheet;

    Console.WriteLine($"Loaded {sheet.RowCount} rows from {filePath}");

    for (int row = 2; row <= sheet.RowCount; row++)
    {
        string value = sheet[$"A{row}"].StringValue;
        if (!string.IsNullOrWhiteSpace(value))
        {
            Console.WriteLine(value);
        }
    }
}
catch (IronXl.Exceptions.IronXLException ex)
{
    Console.WriteLine($"IronXL error reading {filePath}: {ex.Message}");
}
catch (IOException ex)
{
    Console.WriteLine($"File access error: {ex.Message}");
}
Imports IronXL

Dim filePath As String = "user-uploaded-data.csv"

Try
    Dim workbook As WorkBook = WorkBook.LoadCSV(filePath)
    Dim sheet As WorkSheet = workbook.DefaultWorkSheet

    Console.WriteLine($"Loaded {sheet.RowCount} rows from {filePath}")

    For row As Integer = 2 To sheet.RowCount
        Dim value As String = sheet($"A{row}").StringValue
        If Not String.IsNullOrWhiteSpace(value) Then
            Console.WriteLine(value)
        End If
    Next
Catch ex As IronXl.Exceptions.IronXLException
    Console.WriteLine($"IronXL error reading {filePath}: {ex.Message}")
Catch ex As IOException
    Console.WriteLine($"File access error: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

IronXL操作指南涵蓋了各種來源的資料導入模式,包括檔案、流和位元組數組。

C# CSV 檔案讀取器教學:使用IronXL解析並轉換 CSV 資料:圖 5 - 將 CSV 轉換為 Excel 格式

跨平台部署

IronXL獨立於 Microsoft Office 運行,因此適用於伺服器環境和雲端部署。 無論部署到 Windows、Linux、macOS、Docker 容器,或是 Azure 或 AWS 上的雲端函數, IronXL都能在所有平台上提供一致的結果,無需進行設定變更。

這種跨平台能力對於微服務架構來說非常有價值,因為在微服務架構中,輕量級容器負責處理資料處理任務。 IronXL功能概述詳細介紹了支援的環境和運行時目標的完整清單。

如何取得IronXL的授權?

IronXL在生產環境中使用需要許可證金鑰。 我們提供免費試用許可證供您評估,並為個人開發者、團隊和組織提供商業許可證。

在呼叫任何IronXL函數之前,請先在應用程式中套用許可證金鑰:

using IronXL;

// Apply license key at application startup
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

// Verify the license is active
if (IronXl.License.IsValidLicense("YOUR-LICENSE-KEY-HERE"))
{
    Console.WriteLine("IronXL license is active.");
}

// Now use IronXL normally
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
Console.WriteLine($"Loaded {sheet.RowCount} rows.");
using IronXL;

// Apply license key at application startup
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

// Verify the license is active
if (IronXl.License.IsValidLicense("YOUR-LICENSE-KEY-HERE"))
{
    Console.WriteLine("IronXL license is active.");
}

// Now use IronXL normally
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
Console.WriteLine($"Loaded {sheet.RowCount} rows.");
Imports IronXL

' Apply license key at application startup
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"

' Verify the license is active
If IronXl.License.IsValidLicense("YOUR-LICENSE-KEY-HERE") Then
    Console.WriteLine("IronXL license is active.")
End If

' Now use IronXL normally
Dim workbook As WorkBook = WorkBook.LoadCSV("data.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
Console.WriteLine($"Loaded {sheet.RowCount} rows.")
$vbLabelText   $csharpLabel

有關試用和授權選項,請造訪IronXL授權頁面

為什麼IronXL是 CSV 處理的理想選擇?

IronXL將 C# CSV 檔案讀取從繁瑣的解析任務變成了簡單的操作。 該函式庫可以處理手動解析出錯的常見極端情況——嵌入式逗號、帶引號的欄位中的換行符、不一致的分隔符號、編碼變更和格式錯誤的行——而無需針對每種情況編寫自訂程式碼。 無論您需要快速的一次性資料匯入,還是每天處理數千個文件的生產管道,同一個 API 都能在這兩種情況下正常運作。

使用 string.SplitStreamReader 手動解析 CSV 時,如果引號的欄位包含分隔符,或欄位值中出現換行符,則會很快出現問題。 IronXL預設會正確處理這些情況,並遵循CSV 規範對帶引號的字段處理和轉義序列進行規範。

IronXL在.NET 10 中處理 CSV 檔案時具有以下主要優勢:

-無需 Office 依賴:伺服器和雲端部署無需安裝 Microsoft Office 或任何 COM 互通即可運作。 -自訂分隔符號:支援透過 list分隔符 參數使用任何分隔符號字元或字串。 -型別安全的儲存格存取IntValueDateTimeValue 存取器在遇到錯誤資料時傳回安全的預設值,而非拋出例外值。 -範圍操作:跨範圍聚合和查詢數據,無需逐行迭代 -格式轉換:在一個工作流程中載入 CSV 檔案並另存為 XLSX、XLS、PDF 或其他格式。 -資料集整合:將載入的工作簿轉換為 DataSet / Data標籤頁le 格式,以便進行.NET和資料庫操作 -跨平台:無需任何更改即可在 Windows、Linux、macOS、Docker 和雲端環境中運行

IronXL文件儲存格格式指南提供了有關格式設定、公式支援和進階工作簿操作的更多詳細資訊。

準備好自信地處理 CSV 檔案了嗎? 立即開始免費試用,探索IronXL 的完整功能

常見問題解答

什麼是 CSV 檔案,為什麼它被廣泛使用?

CSV 檔案(即逗號分隔值檔案)是一種用於儲存表格資料的簡單文字格式。由於其簡單且易於使用,CSV 檔案在商業應用程式中被廣泛用於不同系統之間的資料匯出與匯入。

IronXL 如何協助在 C# 中解析 CSV 檔案?

IronXL 透過提供強大的工具來處理複雜的 CSV 結構(包括不同的欄位分隔符、帶引號的欄位以及資料型別轉換),從而簡化了 C# 中的 CSV 檔案解析工作。

IronXL 能否將 CSV 資料轉換為其他格式?

是的,IronXL 允許開發人員將 CSV 資料轉換為各種格式,例如 XML 和 Excel,使其能靈活應對不同的資料處理需求。

CSV檔案解析常見挑戰有哪些?

常見挑戰包括處理不同的欄位分隔符、管理帶引號的欄位,以及精確的資料類型轉換。IronXL通過其高級解析能力幫助緩解這些問題。

IronXL適合企業級的CSV處理嗎?

是的,IronXL被設計為企業級準備的,提供穩健和可擴展的CSV檔案處理解決方案,適用於.NET應用程式。

IronXL支援有效率地處理大型CSV檔案嗎?

IronXL為效能進行了優化,可有效率地處理大型CSV檔案而不損害速度或準確性。

IronXL可以處理具有自訂分隔符的CSV檔案嗎?

是的,IronXL支援具有自訂分隔符的CSV檔案,為開發者面對非標準CSV格式提供了靈活性。

IronXL 如何處理 CSV 文件中的引用字段?

IronXL在CSV檔案中準確解析帶引號的欄位,確保資料完整性並在閱讀過程中進行正確轉換。

哪些程式設計語言可以與IronXL一起使用進行CSV解析?

IronXL是一個.NET程式庫,因此可以使用.NET框架支援的語言,如C#和VB.NET。

是否有使用IronXL處理CSV檔案的程式碼範例?

是的,IronXL文檔提供完整的程式碼範例,用於在C#應用程式中讀取、解析和處理CSV檔案。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。

鋼鐵支援團隊

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