跳過到頁腳內容
使用 IRONXL

如何在.NET中使用IronXL寫入CSV檔案。

為什麼.NET開發人員需要更好的 CSV 解決方案?

CSV 檔案為無數.NET應用程式提供資料交換支援-但當需要處理實際應用中的複雜情況時,標準函式庫選項往往力不從心。從財務報告到庫存系統,您只需幾行程式碼即可透過程式設計方式建立 CSV 檔案。 雖然像CsvHelper這樣的程式庫涵蓋了基本的 CSV 操作,但現代開發人員面臨著複雜的場景:轉換帶有公式的 Excel 工作簿、在匯出過程中保留資料類型以及處理企業級電子表格工作流程。 IronXL透過將可靠的 CSV 寫入功能與完整的Excel 功能結合在一個遵循RFC 4180 標準的、無依賴項的庫中,解決了這些挑戰。

這使其成為建立支援多列、行特定處理邏輯和自動推斷分隔符號的自訂.NET CSV 寫入器或.NET CSV 解析器的開發人員的理想選擇。 本教學將帶您了解 IronXL 的 CSV 功能—從基本的檔案建立到企業級資料匯出。

如何安裝和設定IronXL?

透過NuGet套件管理器安裝IronXL只需幾秒鐘。 您可以使用套件管理器控制台或.NET CLI:

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

安裝完成後,新增IronXL命名空間,即可立即開始寫入 CSV 檔案。 以下範例展示如何在.NET 10 中使用頂級語句建立工作簿、填充資料並將其匯出為 CSV 檔案:

using IronXL;

// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("data");

// Add headers
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";

// Add data rows
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 100;
workSheet["C2"].Value = 19.99;

workSheet["A3"].Value = "Gadget";
workSheet["B3"].Value = 250;
workSheet["C3"].Value = 34.50;

workSheet["A4"].Value = "Component";
workSheet["B4"].Value = 75;
workSheet["C4"].Value = 8.99;

// Save as CSV with comma delimiter
workBook.SaveAsCsv("inventory.csv", ",");
using IronXL;

// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("data");

// Add headers
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";

// Add data rows
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 100;
workSheet["C2"].Value = 19.99;

workSheet["A3"].Value = "Gadget";
workSheet["B3"].Value = 250;
workSheet["C3"].Value = 34.50;

workSheet["A4"].Value = "Component";
workSheet["B4"].Value = 75;
workSheet["C4"].Value = 8.99;

// Save as CSV with comma delimiter
workBook.SaveAsCsv("inventory.csv", ",");
$vbLabelText   $csharpLabel

這個簡單的程式示範如何直接從 C# 程式碼寫入 CSV 內容,並建立一個用於保存資料的WorkBook 物件SaveAsCsv 方法預設使用逗號作為分隔符,但允許您指定任何分隔符號——這對於特定於區域設定的情況非常有用,在這些情況下,分號或製表符是標準的列分隔符。

瞭解工作簿和工作表模型

IronXL透過工作簿到工作表的層級結構來組織資料。 WorkBook充當一個或多個WorkSheet物件的容器,每個 WorkSheet 物件代表一個單元格網格。 當您匯出為 CSV 時, IronXL會為每個工作表建立一個文件,並以 filename.SheetName.csv 的模式命名。

無論您是從頭開始建立新檔案、載入現有的Excel 工作簿,還是從資料庫匯出數據,此模型都能為您提供一致的 API。 您可以使用標準 Excel 表示法(B2)或從零開始的行和列整數來引用儲存格,具體取決於您的工作流程。

如何使用自訂分隔符號編寫 CSV 檔案?

不同地區和系統對列分隔符號的要求不同。 歐洲地區常使用分號,因為小數會出現逗號。 製表符分隔值 (TSV) 在生物資訊學和日誌處理流程中很常見。 IronXL 的 SaveAsCsv 方法接受任何字串作為分隔符號:

using IronXL;

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");

workSheet["A1"].Value = "Region";
workSheet["B1"].Value = "Revenue";
workSheet["C1"].Value = "Units";

workSheet["A2"].Value = "Europe";
workSheet["B2"].Value = "1250000.50";
workSheet["C2"].Value = 3400;

workSheet["A3"].Value = "不rth America";
workSheet["B3"].Value = "2800000.00";
workSheet["C3"].Value = 7200;

// Semicolon delimiter for European locales
workBook.SaveAsCsv("sales_europe.csv", ";");

// Tab delimiter for TSV output
workBook.SaveAsCsv("sales_tsv.tsv", "\t");
using IronXL;

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");

workSheet["A1"].Value = "Region";
workSheet["B1"].Value = "Revenue";
workSheet["C1"].Value = "Units";

workSheet["A2"].Value = "Europe";
workSheet["B2"].Value = "1250000.50";
workSheet["C2"].Value = 3400;

workSheet["A3"].Value = "不rth America";
workSheet["B3"].Value = "2800000.00";
workSheet["C3"].Value = 7200;

// Semicolon delimiter for European locales
workBook.SaveAsCsv("sales_europe.csv", ";");

// Tab delimiter for TSV output
workBook.SaveAsCsv("sales_tsv.tsv", "\t");
$vbLabelText   $csharpLabel

分隔符號字串直接放入分隔符號字元槽中,無需任何額外的解析配置。 IronXL會處理包含分隔符號字元的儲存格的引用,確保輸出符合RFC 4180

如何將Excel工作簿轉換為CSV格式?

如何使用IronXL建立.NET CSV 寫入器:圖 1 - 使用IronXL的 CSV 輸出範例

IronXL擅長將現有的Excel 文件轉換為 CSV 文件,評估公式,並保持資料完整性。 當處理包含標題行和動態計算值的電子表格時,這一點至關重要。

using IronXL;

// Load an Excel file with formulas and formatting
WorkBook workBook = WorkBook.Load("financial_report.xlsx");

// Evaluate all formulas before export so calculated values appear in CSV
workBook.EvaluateAll();

// Export to CSV -- each worksheet creates a separate CSV file
// Creates: report.Sheet1.csv, report.Sheet2.csv, etc.
workBook.SaveAsCsv("report.csv", ",");
using IronXL;

// Load an Excel file with formulas and formatting
WorkBook workBook = WorkBook.Load("financial_report.xlsx");

// Evaluate all formulas before export so calculated values appear in CSV
workBook.EvaluateAll();

// Export to CSV -- each worksheet creates a separate CSV file
// Creates: report.Sheet1.csv, report.Sheet2.csv, etc.
workBook.SaveAsCsv("report.csv", ",");
$vbLabelText   $csharpLabel

轉換多工作表工作簿時, IronXL會自動為每個工作表產生單獨的 CSV 檔案。 公式計算在匯出前執行,確保最終 CSV 輸出的資料準確無誤。 EvaluateAll 方法會在檔案寫入磁碟之前解析所有公式,包括跨工作表參考。

輸出

首先,您可以在這裡看到由多工作表 Excel 檔案產生的 CSV 檔案:

如何使用IronXL建立.NET CSV 寫入器:圖 2 - CSV 檔案

以下是一個Excel表格與對應CSV檔案的比較範例:

如何使用IronXL建立.NET CSV 寫入器:圖 3 - 範例輸出

如何將資料表匯出為 CSV 檔案?

對於資料庫驅動型應用程序, IronXL使資料表匯出變得簡單。 以下範例從模擬資料來源讀取 DataTable 並將其寫入 CSV 文件,使用分號作為分隔符號:

using System.Data;
using IronXL;

// Simulate a DataTable from a database query
DataTable dataTable = GetSalesData();

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");

// Write column headers from DataTable schema
for (int col = 0; col < dataTable.Columns.Count; col++)
{
    workSheet.SetCellValue(0, col, dataTable.Columns[col].ColumnName);
}

// Write data rows
int row = 1;
foreach (DataRow dataRow in dataTable.Rows)
{
    for (int col = 0; col < dataTable.Columns.Count; col++)
    {
        workSheet.SetCellValue(row, col, dataRow[col]?.ToString() ?? string.Empty);
    }
    row++;
}

// Export with semicolon delimiter for European compatibility
workBook.SaveAsCsv("sales_data.csv", ";");
using System.Data;
using IronXL;

// Simulate a DataTable from a database query
DataTable dataTable = GetSalesData();

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");

// Write column headers from DataTable schema
for (int col = 0; col < dataTable.Columns.Count; col++)
{
    workSheet.SetCellValue(0, col, dataTable.Columns[col].ColumnName);
}

// Write data rows
int row = 1;
foreach (DataRow dataRow in dataTable.Rows)
{
    for (int col = 0; col < dataTable.Columns.Count; col++)
    {
        workSheet.SetCellValue(row, col, dataRow[col]?.ToString() ?? string.Empty);
    }
    row++;
}

// Export with semicolon delimiter for European compatibility
workBook.SaveAsCsv("sales_data.csv", ";");
$vbLabelText   $csharpLabel

DataTable 導入時,dataTable.Rows 集合中的每一行都會成為工作表中的新行。 IronXL在轉換過程中保留資料類型-數字保持數值形式,日期保持格式,文字無需額外配置即可處理特殊字元。

輸出

在這裡,您可以看到輸出 CSV 檔案旁邊的類比資料來源:

如何使用IronXL建立.NET CSV 寫入器:圖 4 - 將資料表匯出為 CSV 輸出

立即開始在您的項目中使用 IronXL 並免費試用。

第一步:
green arrow pointer

IronXL與 CsvHelper 在寫入 CSV 檔案方面有何不同?

考慮以下員工資料匯出場景,該場景示範了使用這兩個庫的 CSV 寫入工作流程。

CsvHelper 實作:

using System.Globalization;
using System.IO;
using CsvHelper;

using var writer = new StreamWriter("employees.csv");
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
csv.WriteRecords(employees);
using System.Globalization;
using System.IO;
using CsvHelper;

using var writer = new StreamWriter("employees.csv");
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
csv.WriteRecords(employees);
$vbLabelText   $csharpLabel

IronXL實施:

using IronXL;

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("employees");

int rowIndex = 1;
foreach (var emp in employees)
{
    workSheet[$"A{rowIndex}"].Value = emp.Name;
    workSheet[$"B{rowIndex}"].Value = emp.Salary;
    workSheet[$"C{rowIndex}"].Value = emp.StartDate;
    rowIndex++;
}

workBook.SaveAsCsv("employees.csv", ",");
using IronXL;

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("employees");

int rowIndex = 1;
foreach (var emp in employees)
{
    workSheet[$"A{rowIndex}"].Value = emp.Name;
    workSheet[$"B{rowIndex}"].Value = emp.Salary;
    workSheet[$"C{rowIndex}"].Value = emp.StartDate;
    rowIndex++;
}

workBook.SaveAsCsv("employees.csv", ",");
$vbLabelText   $csharpLabel
IronXL與 CsvHelper 功能對比
特徵 CsvHelper IronXL
基本的 CSV 編寫 是的 是的
Excel 轉 CSV 是的
公式評估 是的
多頁處理 是的
資料類型保留 手動的 自動的
Excel格式支援(XLSX、XLS、XLSM) 是的
無需微軟辦公室軟體 是的 是的
儲存格格式和樣式 是的
跨平台(支援.NET 10) 是的 是的

CsvHelper 可以有效率地處理 POCO 物件的簡單序列化。 IronXL在您需要載入現有 Excel 檔案、在匯出前評估公式或以精細控制管理工作表範圍時,提供了額外的功能。 如果您的工作流程涉及從業務用戶接收 .xlsx 檔案並將其轉換為 CSV 以供下游系統使用, IronXL將從您的管道中移除整個轉換步驟。

IronXL為 CSV 匯出提供了哪些企業級功能?

IronXL 的 SaveAsCsv 方法具備多項可用於生產環境的功能:

IronXL CSV 匯出企業版功能
特徵 描述 用例
自訂分隔符 逗號、分號、製表符或任何字符 區域設定相容性
編碼選項 UTF-8、UTF-16 和自訂編碼 國際字符集
公式評估 匯出前計算 Excel 公式 財務報告、動態數據
跨平台支援 Windows、Linux、macOS 雲端和容器部署
多頁導出 每個工作表一個 CSV 文件 複雜的工作簿結構
RFC 4180 合規性 特殊字元自動加引號 保證互通性

您可以在匯出之前套用儲存格資料格式,以控制數字、貨幣和日期在 CSV 輸出中的顯示方式。 對於大型資料集,使用工作表區域操作分塊處理數據,以保持記憶體使用量可預測。

跨平台支援意味著您可以將 IronXL 支援的 CSV 產生功能部署到 Kubernetes 或 Azure 應用程式服務中的 Linux 容器,而無需對程式碼進行任何變更。 該庫不包含任何非託管依賴項,因此在各種作業系統上都能完全運作。 有關支援的運行時的完整詳細信息,請參閱IronXL平台相容性指南

如何處理常見的CSV導出問題?

大規模處理 CSV 匯出檔案時,會出現一些可預見的問題。以下是解決每個問題的方法:

資料中的特殊字元: IronXL會自動轉義儲存格值中的引號、逗號和換行符。 您無需預處理字串或編寫自訂轉義邏輯—該程式庫內部會處理 RFC 4180 引用規則。

大檔案處理:對於包含數萬行資料的工作簿,請使用工作表區域分批處理資料。 在最終導出之前寫入中間工作表,可以讓你控制記憶體分配。

編碼問題:在儲存格值中處理國際字元、亞洲文字或表情符號時,請明確指定 UTF-8 編碼。 IronXL開箱即用,支援 UTF-8 和 UTF-16 編碼,因此不需要第三方編碼庫。

缺少或輸入錯誤的資料: IronXL預設保留數字和日期格式。 當單元格包含引用缺失資料的公式時,EvaluateAll() 將解析為錯誤值,而不是靜默地輸出空白文本,從而在管道早期就發現資料品質問題。

分隔符號衝突:如果您的資料包含分隔符號字元(例如,價格欄位包含 $1,200.00,而使用逗號作為分隔符號), IronXL會根據 RFC 4180 規則自動將數值用雙引號括起來。

有關詳細指導,請造訪IronXL CSV 文件API 參考支援資源

如何使用IronXL讀取和解析 CSV 檔案?

CSV 寫入只是故事的一半。 IronXL也支援CSV 讀取和解析,將逗號分隔的資料載入到工作簿結構中,您可以對其進行查詢、篩選和轉換,然後再匯出為任何格式。

using IronXL;

// Load an existing CSV file into a workbook
WorkBook workBook = WorkBook.Load("sales_data.csv");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Iterate over rows and process data
foreach (var row in workSheet.Rows)
{
    string product = row["A"].ToString();
    int quantity = row["B"].IntValue;
    decimal price = (decimal)row["C"].DoubleValue;

    Console.WriteLine($"Product: {product}, Qty: {quantity}, Price: {price:C}");
}

// Apply a filter and re-export to a new CSV
workBook.SaveAsCsv("filtered_output.csv", ",");
using IronXL;

// Load an existing CSV file into a workbook
WorkBook workBook = WorkBook.Load("sales_data.csv");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Iterate over rows and process data
foreach (var row in workSheet.Rows)
{
    string product = row["A"].ToString();
    int quantity = row["B"].IntValue;
    decimal price = (decimal)row["C"].DoubleValue;

    Console.WriteLine($"Product: {product}, Qty: {quantity}, Price: {price:C}");
}

// Apply a filter and re-export to a new CSV
workBook.SaveAsCsv("filtered_output.csv", ",");
$vbLabelText   $csharpLabel

透過IronXL載​​入 CSV 文件,您可以存取完整的表格 API ,包括排序、篩選和公式計算。 您也可以使用SaveAs將載入的資料儲存為 Excel 文件,只需一次方法呼叫即可將 CSV 轉換為 XLSX——這是建立報表產生服務時的常見要求。

匯出前如何驗證 CSV 資料?

在匯出前進行資料驗證可防止下游管道故障。 IronXL可讓您直接存取儲存格值和類型,因此您可以在寫入之前檢查空值、強制執行數值範圍並拒絕格式錯誤的日期:

using IronXL;

WorkBook workBook = WorkBook.Load("input.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

var errors = new List<string>();

for (int rowIdx = 1; rowIdx <= workSheet.RowCount; rowIdx++)
{
    string productName = workSheet[$"A{rowIdx}"].StringValue;
    double price = workSheet[$"C{rowIdx}"].DoubleValue;

    if (string.IsNullOrWhiteSpace(productName))
        errors.Add($"Row {rowIdx}: Product name is empty.");

    if (price <= 0)
        errors.Add($"Row {rowIdx}: Price must be greater than zero (found {price}).");
}

if (errors.Count == 0)
{
    workBook.SaveAsCsv("validated_output.csv", ",");
    Console.WriteLine("Export complete.");
}
else
{
    foreach (var error in errors)
        Console.WriteLine(error);
}
using IronXL;

WorkBook workBook = WorkBook.Load("input.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

var errors = new List<string>();

for (int rowIdx = 1; rowIdx <= workSheet.RowCount; rowIdx++)
{
    string productName = workSheet[$"A{rowIdx}"].StringValue;
    double price = workSheet[$"C{rowIdx}"].DoubleValue;

    if (string.IsNullOrWhiteSpace(productName))
        errors.Add($"Row {rowIdx}: Product name is empty.");

    if (price <= 0)
        errors.Add($"Row {rowIdx}: Price must be greater than zero (found {price}).");
}

if (errors.Count == 0)
{
    workBook.SaveAsCsv("validated_output.csv", ",");
    Console.WriteLine("Export complete.");
}
else
{
    foreach (var error in errors)
        Console.WriteLine(error);
}
$vbLabelText   $csharpLabel

這種模式在 ETL 管道中尤其有價值,因為應該拒絕錯誤行(並記錄錯誤行),而不是默默導出。 IronXL 的 RangeRowCell 物件上的儲存格資料存取方法傳回強型別值,從而降低了靜默型別轉換錯誤的風險。

如何開始使用IronXL進行 CSV 寫入?

IronXL將 CSV 寫入從解析難題轉變為直接操作。 它將 CSV 功能與 Excel 工作簿支援、公式計算和自動類型處理相結合,消除了管理多個庫或手動資料轉換的複雜性。

免費試用版讓您在開發過程中無需許可證金鑰即可完全存取所有功能,包括多工作表匯出、公式評估和跨平台部署。 當您準備投入生產時,許可證等級從涵蓋商業用途的單一開發者等級開始。

入門所需關鍵資源:

準備好建造可用於生產環境的 CSV 工作流程了嗎? 立即開始免費試用,五分鐘內即可完成首次 CSV 匯出。

常見問題解答

IronXL的用途是什麼?

IronXL是一個.NET庫,專為處理Excel文件而設計,允許開發人員創建、閱讀和修改Excel文檔,並在保持數據類型的情況下將其導出為如CSV等多種格式,同時管理複雜的電子表格場景。

IronXL如何幫助在.NET中進行CSV寫入?

IronXL提供將Excel工作簿導出為CSV格式的功能,確保數據類型的保留及複雜電子表格場景的有效處理,使其成為.NET開發人員需要強大CSV寫入解決方案的理想選擇。

開發人員為何應考慮使用IronXL進行CSV操作?

開發人員應考慮使用IronXL,以便無縫地將Excel文件導出為CSV,處理大型數據集,並保持數據類型的完整性,為.NET應用程式中的CSV操作提供上乘的解決方案。

使用IronXL進行電子表格管理的好處是什麼?

使用IronXL進行電子表格管理的好處包括簡單操作Excel文檔、支持多種導出格式如CSV、以及在.NET應用程式中有效處理複雜的數據結構和大型數據集。

IronXL能否在導出到CSV時處理大型Excel文件?

是的,IronXL旨在高效處理大型Excel文件,使開發人員能夠將大量數據導出為CSV而不會影響性能或數據完整性。

IronXL如何在導出到CSV時確保數據類型保留?

IronXL通過準確將Excel數據轉換為CSV格式,同時保持原始數據類型和結構來確保數據類型保留,這對於需要精確數據處理的應用程式至關重要。

IronXL適合複雜電子表格場景嗎?

IronXL非常適合複雜的電子表格場景,提供高級功能來管理和操作錯綜複雜的Excel文檔,並確保數據可以準確地導出為CSV或其他格式。

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

鋼鐵支援團隊

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