跳過到頁腳內容
使用 IRONXL

如何在 C# 中使用 IronXL 讀取 CSV 文件

逗號分隔值CSV(Comma Separated Values)文件在業務應用中隨處可見,從財務報告到客戶數據匯出皆是如此。 儘管它們看似簡單,但在處理不同列分隔、引用欄位(雙引號)和各種數據類型轉換時,CSV 解析可能迅速變得複雜。 IronXL 是一個強大的 .NET 庫,提供企業級的 CSV 處理。 允許開發人員輕鬆將 CSV 數據轉換為 XML、Excel 或其他格式。

今天,我們將帶領您了解如何在 C# 中使用 IronXL 作為 CSV 文件讀取器,以及如何輕鬆在 .NET 應用程序中實現它。 您可以通過 免費試用 IronXL,並進一步了解它如何提升您的 .NET CSV 和 Excel 工作。

為何選擇 IronXL 來讀取 CSV ?

IronXL 將 CSV 文件讀取從解析難題轉變為簡單的操作。 不同於手動拆分操作或基本的新 StreamReader 方法,IronXL 自動處理嵌入的逗號、新行以及由不尋常分隔符分隔的欄位等邊界情況。

該庫獨立於 Microsoft Office 運行,非常適合伺服器環境和雲端部署。 無論部署在 Windows、Linux、macOS、Azure 或 AWS 上,IronXL 在所有平台上都提供一致的結果。 這種跨平台兼容性,結合其直觀的 API,使其成為現代 C# 應用程序中需要可靠 CSV 解析的理想選擇。

IronXL 將 CSV 文件與 Excel 格式當作同等重要的對象,允許在文件類型之間無縫轉換,無數據丟失或格式問題。 除了簡單的 CSV 讀取,IronXL 還能使用 C# 從頭創建 CSV 文件。 務必查看我們的 操作指南 以了解更多。 這使得其成為滿足您所有 CSV 需求的完美庫,能夠從讀取、創建 CSV 文件到將其轉換為任何支持的格式。

入門:安裝 IronXL

通過 Visual Studio 的 NuGet 套件管理器安裝 IronXL 只需片刻。 打開您的項目,右鍵單擊解決方案總管中的引用,選擇「管理 NuGet 套件」。搜尋「IronXL.Excel」並點擊「安裝」。

如何使用 IronXL 在 C# 中讀取 CSV 文件:圖1 - IronXL NuGet 安裝

有關詳細的安裝指南,請訪問 IronXL 安裝文檔

安裝後,讀取您的第一個 CSV 文件所需的 源代碼 很少,如下例所示:

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 rows
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 rows
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.WriteLine(cell.StringValue);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

在此示例中,var 讀取器將 CSV 數據作為字符串陣列訪問。 WorkBook.LoadCSV 方法處理標題識別,創建新數據表,並進行內存高效解析,簡化您的數據結構管理。

如何使用 IronXL 在 C# 中讀取 CSV 文件:圖2 - 入門示例輸出

如何從不同分隔符的 CSV 文件中讀取數據?

現實世界的 CSV 文件並不總是使用逗號。 分號、管道符號和製表符是在國際數據集中常見的替代選擇,尤其是在逗號用作小數點分隔符的情況下。 IronXL 通過其靈活的加載選項優雅地處理任何分隔符。

using IronXL;
// Load CSV with semicolon delimiter
WorkBook workbook = WorkBook.LoadCSV("european-data.csv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: ";");
// Load tab-separated values
WorkBook tsvWorkbook = WorkBook.LoadCSV("export_data.tsv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: "\t");
// Access data normally
WorkSheet sheet = workbook.DefaultWorkSheet;
decimal totalSales = sheet["B2:B10"].Sum();
using IronXL;
// Load CSV with semicolon delimiter
WorkBook workbook = WorkBook.LoadCSV("european-data.csv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: ";");
// Load tab-separated values
WorkBook tsvWorkbook = WorkBook.LoadCSV("export_data.tsv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: "\t");
// Access data normally
WorkSheet sheet = workbook.DefaultWorkSheet;
decimal totalSales = sheet["B2:B10"].Sum();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

listDelimiter 參數接受任何字符串,提供對解析行為的完整掌控。 IronXL 在解析時保留列值和數據類型。 數值保持為數字,日期保持為 DateTime 對象,公式保持其關係。 此自動類型保留消除了手動轉換代碼並減少了錯誤。

對於格式不一致的文件,IronXL 的錯誤處理會優雅地管理格式錯誤的行而不會崩潰,記錄問題以便查看,同時繼續處理有效數據。

如何使用 IronXL 在 C# 中讀取 CSV 文件:圖3 - 讀取不同分隔符的輸出

如何將 CSV 數據解析為 C# 對象?

將 CSV 行轉換為強類型對象可簡化數據處理並啟用 LINQ 操作。 IronXL 使此映射通過其 單元訪問方法 變得簡單。 下面的代碼顯示了如何創建一個簡單的 CSV 解析器來處理這個任務:

using IronXL;
public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    public int Stock { get; set; }
    public DateTime? LastUpdated { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        // Parse CSV into objects
        var products = new List<Product>();
        WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
        WorkSheet sheet = workbook.DefaultWorkSheet;
        // Skip first line (header), parse remaining lines
        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
        var lowStock = products.Where(p => p.Stock < 10).ToList();
    }
}
using IronXL;
public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    public int Stock { get; set; }
    public DateTime? LastUpdated { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        // Parse CSV into objects
        var products = new List<Product>();
        WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
        WorkSheet sheet = workbook.DefaultWorkSheet;
        // Skip first line (header), parse remaining lines
        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
        var lowStock = products.Where(p => p.Stock < 10).ToList();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronXL 的類型化值屬性(StringValue, DecimalValue, IntValue, DateTimeValue)安全地處理轉換,對於無效數據返回默認值,而不是拋出異常。 這避免了繁瑣手動工作,例如在解析後為每個屬性創建新字符串。 這種防禦性方法確保了應用程序的健壯性,可以優雅地處理不完美的數據。

該庫還支持可空類型和自定義解析邏輯,當需要時,允許在不犧牲簡單性的情況下適應複雜的業務規則。

如何使用 IronXL 在 C# 中讀取 CSV 文件:圖4 - 解析 CSV 數據輸出

如何將 CSV 轉換為 Excel 格式?

許多業務工作流程要求將 CSV 數據轉換為 Excel 格式以便進行高級分析、格式化或分發給利益相關者。 IronXL 通過保持所有數據完整性,使這一轉換變得簡單。

// Load CSV file
WorkBook csvWorkbook = WorkBook.LoadCSV("monthly-report.csv");
// Save as Excel with single method call
csvWorkbook.SaveAs("monthly-report.xlsx");
// Add formatting before saving
WorkSheet sheet = csvWorkbook.DefaultWorkSheet;
sheet["A1:D1"].Style.Font.Bold = true;
sheet["B:B"].FormatString = "$#,##0.00";  // Currency format
// Load CSV file
WorkBook csvWorkbook = WorkBook.LoadCSV("monthly-report.csv");
// Save as Excel with single method call
csvWorkbook.SaveAs("monthly-report.xlsx");
// Add formatting before saving
WorkSheet sheet = csvWorkbook.DefaultWorkSheet;
sheet["A1:D1"].Style.Font.Bold = true;
sheet["B:B"].FormatString = "$#,##0.00";  // Currency format
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

轉換過程中保持數字精度、日期格式和特殊字符,這些通常會在手動轉換方法中造成問題。 IronXL 自動優化結果 Excel 文件結構,即使是大型數據集,生成的文件也能快速打開。

這種無縫的轉換能力使得自動報告管道中,來自各種來源的 CSV 數據轉化為準備好供高管審閱的精緻 Excel 報告。

如何使用 IronXL 在 C# 中讀取 CSV 文件:圖5 - 將 CSV 轉換為 Excel 格式

最佳實踐與先進功能

IronXL 具有幾項增強能力,提高了 CSV 處理的可靠性。 該庫自動處理各種文本編碼(UTF-8、UTF-16、ASCII),確保國際字符串值和列正確顯示。 內存高效的流處理大型 CSV 文件,無需同時將所有數據加載到 RAM 中。

當處理來自不受信任來源的 CSV 文件時,將操作包裹在 try-catch (Exception ex) 塊中以增加安全性。 要了解全面的錯誤處理策略,請查閱 IronXL 故障排除指南

為獲得大數據集的最佳性能,使用範圍操作(sheet["A1:Z1000"])而非訪問單個數據表行或逐個字元單元格。 IronXL 的公式引擎也可對 CSV 數據工作,讓計算無需先轉換為 Excel。該庫的跨平台支持超越基本兼容性。 Docker 容器、Linux 服務器和雲端功能均可無需配置更改運行 IronXL,使其成為微服務架構的理想選擇。

該庫的跨平台支持超越基本兼容性。 Docker 容器、Linux 服務器和雲端功能均可無需配置更改運行 IronXL,使其成為微服務架構的理想選擇。

結論

IronXL 將 C# CSV 文件讀取從繁瑣的任務轉變成為可靠的企業級解決方案。 其自動 CSV 解析、數據結構管理和無縫 Excel 轉換能力使其成為處理 CSV 文件、數據表 dt 或現代 .NET 應用程序中 CSV 數據的開發人員首選。

準備好簡化您的 CSV 處理? 立即獲取 IronXL 並在您的應用程序中體驗企業級數據處理。

常見問題解答

CSV 文件的主要用途是什麼?

CSV 文件通常用於以簡單文本格式存儲表格數據,如財務報告或客戶數據導出,便於各種應用程序的讀取和處理。

IronXL 如何幫助 C# 中的 CSV 文件處理?

IronXL 是一個 .NET 庫,它通過提供強大的功能來簡化 CSV 文件處理,包括解析、轉換和處理 CSV 數據。它可以將 CSV 數據轉換為其他格式,如 XML 和 Excel,非常適合商業應用。

開發人員在解析 CSV 文件時可能面臨哪些挑戰?

開發人員可能會面臨如處理不同的列分隔符、管理引號字段以及在解析 CSV 文件時執行各種數據類型轉換等挑戰。

IronXL 能夠處理擁有不同列分隔符的 CSV 文件嗎?

是的,IronXL 能夠處理具有不同列分隔符的 CSV 文件,提供了處理多樣化 CSV 格式的靈活性。

使用 IronXL 可以將 CSV 數據轉換為 Excel 嗎?

絕對可以,IronXL 允許開發人員輕鬆地將 CSV 數據轉換為 Excel 格式,便於無縫集成到基於 Excel 的工作流程中。

IronXL 什麼使其適合企業級 CSV 處理?

IronXL 提供了一套強大的功能,包括企業級 CSV 處理,允許高效的數據處理和轉換任務,這對於大型商業應用至關重要。

IronXL 能將 CSV 數據轉換為 XML 格式嗎?

是的,IronXL 可以將 CSV 數據轉換為 XML,從而便於與使用 XML 格式的系統進行數據交換和集成。

IronXL 是否支持 CSV 文件中的數據類型轉換?

IronXL 促進各種數據類型轉換,確保從 CSV 文件中提取的數據能夠準確地轉換並在 .NET 應用中利用。

為何 CSV 解析被認為是複雜的?

CSV 解析之所以變得複雜,是由於存在多樣的列分隔符、引號字段以及需要精確的數據類型轉換,所有這些都需仔細處理。

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