跳至頁尾內容
USING 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專案型別。

dotnet add package IronXL.Excel

有關安裝選項和配置的更多詳細資訊,請參見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,
    listDelimiter: ";");

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

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

// 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,
    listDelimiter: ";");

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

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

// 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, listDelimiter:=";")

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

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

' 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的型別化值屬性——DateTimeValue——安全地處理轉換,對於無效資料返回預設值而不是拋出異常。 這種預防性方法確保應用程式在處理不完善的資料時不會中斷。 它與C# 9引入的C# 記錄型別自然配合,為映射的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
DataTable customerTable = dataSet.Tables[0];

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

// Process with standard ADO.NET
foreach (DataRow row in customerTable.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
DataTable customerTable = dataSet.Tables[0];

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

// Process with standard ADO.NET
foreach (DataRow row in customerTable.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

這種方法直接整合到ADO.NET工作流中,當將CSV資料推送到SQL Server、SQLite或其他關聯資料庫中時,非常有用,通過標準資料適配器。 由於Data製表符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

Module Module1
    Sub Main()
        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
    End Sub
End Module
$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。

手動CSV解析方式如StreamReader在引號欄位中包含分隔符資訊字元,或欄位值中出現換行符時馬上就會失效。 IronXL通過預設的方式正確處理這些情況,並遵循CSV規範的引號欄位處理和轉義序列。

在.NET 10中,IronXL成為CSV工作的一些重要優勢:

  • 無Office依賴:伺服器和雲端部署無需安裝Microsoft Office或任何COM互操作
  • 自訂資訊符號:通過list信息符號參數支持任何資訊符號字元或字串
  • 型別安全的單元存取DateTimeValue存取器在遇到壞資料時返回安全預設值而不是拋出異常
  • 範圍操作:無需逐行迭代即可在範圍內聚合和查詢資料
  • 格式轉換:在一個工作流程中匯入CSV並另存為XLSX, XLS, PDF或其他格式
  • 資料集整合:將載入的工作簿轉換為DataSet / Data製表符le在ADO.NET和資料庫操作中使用
  • 跨平台:在Windows、Linux、macOS、Docker和雲端環境中運行無需更改

IronXL文件單元格式指南進一步詳述了格式化、公式支持和進階工作簿操作。

準備好自信地處理CSV文件了嗎? 從一個免費試用開始,探索完整的IronXL功能集

常見問題

什麼是CSV文件,為什麼它被廣泛使用?

CSV文件,即逗號分隔值文件,是一種用於儲存表格資料的簡單文字格式。它因為簡單易用,廣泛用於不同系統之間的資料導出和導入的業務應用中。

IronXL如何幫助在C#中解析CSV文件?

IronXL通過提供強大的工具來簡化C#中的CSV文件解析,處理不同的列分隔符、帶引號字段和資料型別轉換等複雜的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文件的完整程式碼範例。

Curtis Chau
技術作家

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

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

Iron 支援團隊

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