跳過到頁腳內容
使用 IRONXL

閱讀 CSV .NET:使用 IronXL 的最簡單 C# 方法

閱讀 CSV .NET:使用 IronXL 的最簡單 C# 方法。

有了正確的函式庫,在 .NET 應用程式中讀取和寫入 CSV 檔案就變得非常簡單。 開發人員不需要撰寫自訂解析邏輯來處理分隔符、引號欄位和各種資料類型,只需呼叫單一方法即可載入 CSV 資料,並立即以表格格式存取結構化試算表資料。

IronXL透過將以逗號分隔的檔案視為 Excel 工作簿來轉換 CSV 處理方式。 此 .NET 函式庫消除了手動字串解析的複雜性,同時提供強大的功能,例如 資料表轉換、單元層存取以及無縫 Excel 格式輸出。 該資料庫適用於 .NET Framework、.NET Core 和 .NET 5+,無需安裝 Microsoft Office,因此非常適合 ASP.NET Core 和 .NET Core Web API 專案。

本指南展示了讀取 CSV 檔案、處理自訂定界符、將記錄轉換為 DataTables,以及將 CSV 檔案寫入 Excel 格式的實用技術 - 所有這些都只需要最少的程式碼。 每個程式碼範例都包含詳細說明,以協助您瞭解系統如何運作。

使用 CSV 檔案入門

CSV 檔案(逗點分隔值)因其簡單性和廣泛的相容性,已成為資料交換和儲存的主要工具。 無論您是將資料匯入資料庫、匯出報表,或是與第三方系統整合,CSV 檔案都能提供輕量且彈性的格式來處理表格資料。 在 .NET 中,處理 CSV 檔案是一項常見的工作 - 開發人員經常需要解析、讀取和寫入 CSV 資料,作為商業邏輯、報表或資料遷移工作流程的一部分。

.NET 系統提供了多種處理 CSV 檔案的方式,從基本的字串和檔案操作到像 CsvHelper 之類的強大程式庫。 正確的解析是非常重要的,因為即使是簡單的逗號,當它出現在引號欄位內或作為資料本身的一部分時,也會造成複雜性。 透過利用正確的 .NET 工具並瞭解 CSV 解析的細微差異,開發人員可以確保資料的完整性,並簡化應用程式中的資料處理。

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

最簡單的方法是使用 WorkBook.LoadCSV 方法將 CSV 資料直接匯入工作簿結構中。 此單一方法可自動處理解析、分隔符偵測和資料組織 - 無需建立新的 StreamReader 或手動處理每一行字串。

透過 Visual Studio 中的 NuGet Package Manager Console 安裝 IronXL。 開啟您的 .NET 專案並執行:

Install-Package IronXL.Excel

Read CSV .NET:使用 IronXL 的最簡單 C# 方法:圖像 1 - 安裝

using IronXL;
using System;

class Program
{
    static void Main(string[] args)
    {
        // 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;
using System;

class Program
{
    static void Main(string[] args)
    {
        // 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
Imports System

Module Program
    Sub Main(args As String())
        ' 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
    End Sub
End Module
$vbLabelText   $csharpLabel

輸入

Read CSV .NET:使用 IronXL 的最簡單 C# 方法:圖像 2 - CSV 輸入範例

輸出

Read CSV .NET:使用 IronXL 的最簡單 C# 方法:圖像 3 - 控制台輸出

另外,您也可以使用 CsvHelper 函式庫來讀取 CSV 檔案,該函式庫在處理 .NET 中的 CSV 作業方面很受歡迎。 若要使用 CsvHelper 讀取 CSV 檔案,請先建立 StreamReader 然後再建立新的 CsvReader 實例,通常會指定給變數,例如 var csvvar reader

using (var reader = new StreamReader("sales_data.csv"))
using (var csv = new CsvHelper.CsvReader(reader, System.Globalization.CultureInfo.InvariantCulture))
{
    var records = csv.GetRecords<dynamic>().ToList();
    // Process records as needed
}
using (var reader = new StreamReader("sales_data.csv"))
using (var csv = new CsvHelper.CsvReader(reader, System.Globalization.CultureInfo.InvariantCulture))
{
    var records = csv.GetRecords<dynamic>().ToList();
    // Process records as needed
}
Imports System.Globalization
Imports System.IO
Imports CsvHelper

Using reader As New StreamReader("sales_data.csv")
    Using csv As New CsvReader(reader, CultureInfo.InvariantCulture)
        Dim records = csv.GetRecords(Of Object)().ToList()
        ' Process records as needed
    End Using
End Using
$vbLabelText   $csharpLabel

您也可以使用 CsvHelper 來寫入 CSV 檔案,方法是建立 StreamWriterCsvWriter 實例。

LoadCSV 方法接受三個參數:檔案路徑、用於內部表示的目標 Excel 格式,以及分隔值的分隔符。 載入後,CSV 內容可透過 DefaultWorkSheet 屬性存取,該屬性提供包含所有匯入記錄的主要工作表。

嵌套迴圈結構會遍歷工作表中的每一 Row 行,然後遍歷該行中的每一 Cell 單元。 Value 屬性會以物件的形式回傳儲存格內容,而 tab 字元則會在控制台輸出中建立可閱讀的欄位分隔。 無論來源檔案是否包含 10 行,或是處理記憶體中有成千上萬筆紀錄的大型 CSV 檔案,此模式都能以相同方式運作。

手動 CSV 解析與使用函式庫比較如何?

瞭解 IronXL 所消除的複雜性有助於了解其價值。 手動 CSV 解析需要處理多種邊緣情況,這些情況看似簡單,但在任何專案中都會迅速成為問題。

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 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;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // 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
Imports System.IO

Module Program
    Sub Main(args As String())
        ' 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
    End Sub
End Module
$vbLabelText   $csharpLabel

輸入

Read CSV .NET:使用 IronXL 的最簡單 C# 方法:圖像 4 - CSV 輸入

輸出

Read CSV .NET:使用 IronXL 的最簡單 C# 方法:圖像 5 - 手動 CSV 解析輸出

當 CSV 欄位在引號字串中包含內嵌逗號時,手動方式就會失敗 - 這是地址欄位或描述中常見的情況。 正確讀寫 CSV 檔案需要處理引號欄位、轉換引號、多行值和不同的編碼。 使用 CsvHelper 函式庫或類似的 CSV Helper 套件會增加依賴性,而滾動您自己的解析器則意味著要建立新的 StreamReader 、實作 var 讀取模式,並自行管理整個檔案讀取流程。

using IronXL;
using System;

class Program
{
    static void Main(string[] args)
    {
        // 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;
using System;

class Program
{
    static void Main(string[] args)
    {
        // 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
Imports System

Class Program
    Shared Sub Main(args As String())
        ' 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
    End Sub
End Class
$vbLabelText   $csharpLabel

IronXL 版本可以完成相同的任務,同時正確處理引號 CSV 欄位、特殊字符和編碼變化。 WorkBook 類別在內部管理解析的複雜性,讓開發人員可以專注於處理資料,而不是擷取資料。 與需要建立新的 CsvReader 實例或 CsvHelper 套件組態的方法不同,IronXL 不需要額外的設定 - 只需載入即可使用。

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

CSV 檔案並不總是使用逗號作為分隔符。 由於十進位數字中使用逗號,歐洲系統匯出經常使用分號,而制表符分隔值 (TSV) 和管道分隔檔案則經常出現在各種應用程式的資料匯出中。

using IronXL;
using System;

class Program
{
    static void Main(string[] args)
    {
        // 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;
using System;

class Program
{
    static void Main(string[] args)
    {
        // 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
Imports System

Class Program
    Shared Sub Main(args As String())
        ' 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")
    End Sub
End Class
$vbLabelText   $csharpLabel

LoadCSV 中的 listDelimiter 參數接受任何單一字元或轉換順序作為欄位分隔符。 Tab 字元使用 \t 轉換順序。 載入後,不論原始格式為何,資料結構都會保持一致,讓您可以輕鬆處理來自多個來源且分隔符不同的 CSV 檔案。 大多數 CSV 檔案的預設值為逗號,但此彈性可處理您的專案遇到的任何變化。

輸入

Read CSV .NET:使用 IronXL 的最簡單 C# 方法:圖像 6 - 半括號分隔 CSV 檔案輸入

輸出

Read CSV .NET:使用 IronXL 的最簡單 C# 方法:圖像 7 - 以分號分隔的輸出

RowCountColumnCount類別屬性可快速驗證檔案載入是否正確,這在處理不熟悉的資料來源或驗證 ASP.NET Core 應用程式中的使用者上傳時特別有用。

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

將 CSV 資料轉換為 DataTable 可與資料庫作業、UI 應用程式中的資料綁定以及 LINQ 查詢進行整合。 ToDataTable 方法只需一次呼叫即可執行此轉換。

using IronXL;
using System;
using System.Data;

class Program
{
    static void Main(string[] args)
    {
        // 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 file 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;
using System.Data;

class Program
{
    static void Main(string[] args)
    {
        // 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 file 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
Imports System.Data

Module Program
    Sub Main(args As String())
        ' 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 file 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($"\nTotal 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
    End Sub
End Module
$vbLabelText   $csharpLabel

ToDataTable 中的布林參數決定第一行應該成為欄頭(true)還是資料(false)。 當設定為 true 時,產生的 DataTable 的欄位會攜帶 CSV 檔頭行的屬性名稱,可使用類似 row["Name"] 的欄位名稱直覺地存取資料。

此轉換對於需要使用 SqlBulkCopy 大量插入資料庫、在 Windows Forms 應用程式中填充 DataGridView 控件,或使用 LINQ 表達式執行複雜資料轉換的場景來說非常有價值。 DataTable 格式還能在您的 .NET Core Web API 專案中自然地與 Entity Framework 及其他 ORM 工具整合。

CSV 檔案可以轉換為 Excel 格式嗎?

IronXL.Excel 的突出功能之一是將 CSV 資料轉換為適當的 Excel 格式。 這可以在原本平面的 CSV 資料中加入公式、格式化、圖表和多個工作表 - 這是單獨撰寫 CSV 檔案所無法達到的。

using IronXL;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Load CSV data from file path
        string path = "quarterly_sales.csv";
        WorkBook workbook = WorkBook.LoadCSV(path, ExcelFileFormat.XLSX, ",");
        // Save as Excel XLSX format - create 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;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Load CSV data from file path
        string path = "quarterly_sales.csv";
        WorkBook workbook = WorkBook.LoadCSV(path, ExcelFileFormat.XLSX, ",");
        // Save as Excel XLSX format - create 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
Imports System

Module Program
    Sub Main(args As String())
        ' Load CSV data from file path
        Dim path As String = "quarterly_sales.csv"
        Dim workbook As WorkBook = WorkBook.LoadCSV(path, ExcelFileFormat.XLSX, ",")
        ' Save as Excel XLSX format - create 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")
    End Sub
End Module
$vbLabelText   $csharpLabel

SaveAs 方法會根據檔案副檔名自動決定輸出格式。 XLSX 可建立與 Excel 2007 及更新版本相容的現代 Office Open XML 檔案,而 XLS 則可為較舊的應用程式建立傳統的 Binary Interchange File Format 文件。

輸入

Read CSV .NET:使用 IronXL 的最簡單 C# 方法:圖像 8 - CSV 資料

輸出

Read CSV .NET:使用 IronXL 的最簡單 C# 方法:圖 9 - Excel 輸出

Read CSV .NET:使用 IronXL 的最簡單 C# 方法:圖像 10 - CSV 至 Excel 輸出

當從資料庫或 API 匯出的 CSV 在分發給使用者之前需要強化時,此工作流程會特別有用。 轉換完成後,Excel 檔案可以獲得額外的格式化、公式,或與其他工作表結合 - 所有這些都可以透過 IronXL 的 全面編輯功能以程式化的方式完成。 與使用新的 StreamWriter 實例的 var writer 來寫入 CSV 檔案的方法不同,IronXL 可以無縫處理整個檔案轉換。

如何存取 CSV 資料中的特定儲存格值?

除了迭代所有記錄之外,IronXL.Excel 還可使用熟悉的 Excel 式位址直接存取儲存格。 這能夠在不同的資料類型中進行有針對性的資料擷取和類型安全的數值擷取。

using IronXL;
using System;

// Example class to demonstrate structured data access
public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        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;
using System;

// Example class to demonstrate structured data access
public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        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
Imports System

' Example class to demonstrate structured data access
Public Class Employee
    Public Property Id As Integer
    Public Property Name As String
    Public Property Age As Integer
End Class

Class Program
    Shared Sub Main(args As String())
        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
    End Sub
End Class
$vbLabelText   $csharpLabel

儲存格位址遵循 Excel 慣例,其中字母代表 CSV 列 (A、B、C),數字代表行索引位置 (1、2、3)。 Cell 類提供特定類型的存取器,包括 StringValue, IntValue, DecimalValue, BoolValue, 和 DateTimeValue. 這些存取器會自動處理解析和轉換,省去了手動類型轉換,與將所有內容儲存為字串值相比,可減少記憶體開銷。

使用 A2:A10 之類的符號選擇範圍,會返回 範圍 物件,該物件支援迭代、聚合函數和大量操作。 這在從大型 CSV 檔案中萃取特定欄位或矩形資料區域時,證明是非常有價值的。 例如,您可能會從特定欄位建立新的 List 值,或是將篩選的資料寫入另一個檔案。

CSV 檔案作業中的錯誤處理

在 .NET 應用程式中處理 CSV 檔案時,強大的錯誤處理功能至關重要。 讀寫 CSV 檔案可能會導致各種問題,例如遺失檔案、畸形資料或意外的解析錯誤。 為了管理這些情況,最好的做法是將檔案和資料作業包裝在 try-catch 區塊中,讓您的應用程式可以優雅地處理異常並提供有意義的回饋。

結論

如果使用正確的方法,在 .NET 中讀取 CSV 檔案只需要極小的工作量。 IronXL 的 LoadCSV 方法可自動處理解析的複雜性,支援各種分隔符,並透過熟悉的試算表概念立即存取結構化資料。無論您是在建立 ASP.NET Core 應用程式、.NET Core Web API 或控制台專案,這個函式庫都能簡化 CSV 處理。

開始免費試用,體驗 IronXL 如何在您的 .NET 專案中簡化讀取 CSV 檔案的過程。 對於生產部署,授權選項從 $799 開始,包含永久使用權和一年的支援。

常見問題解答

在 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 提供直觀的方法,可直接在 C# 中讀取、編輯和寫入 CSV 資料,從而簡化 CSV 資料的操作。

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

IronXL 提供對異步操作的支援,讓您可以在不阻塞主應用程式線程的情況下讀取 CSV 檔案。

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

IronXL.Excel 可以將 CSV 資料轉換成 Excel 格式,讓您可以利用 Excel 的進階功能來進行資料分析和呈現。

IronXL 是否有任何讀取 CSV 檔案的相依性?

IronXL 是一個獨立的函式庫,讀取 CSV 檔案不需要任何外部相依性,可簡化專案中的設定程序。

IronXL 可以用來將資料從 CSV 匯出成其他格式嗎?

是的,IronXL 可以將 CSV 中的資料匯出為各種格式,包括 Excel,提供資料處理和報告的多功能性。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。