跳過到頁腳內容
使用 IRONXL

如何在 .NET 中使用 IronXL 創建 CSV 撰寫器

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

CSV 文件是無數 .NET 應用程式中資料交換的動力。 從財務報告到庫存系統,您可以用程式碼的方式在幾行代碼中創建 CSV 文件。 雖然像CsvHelper 這樣的庫覆蓋了基本的 CSV 操作,但現代開發者面臨複雜的場景:轉換包含公式的 Excel 工作簿,導出過程中保存數據類型,以及處理企業級電子表格工作流程。 IronXL addresses these challenges by combining robust CSV writing with comprehensive Excel functionality in a single, handling multiple columns with ease in a single,dependency-free library that follows RFC 4180 標準

這使得它非常適合開發者構建自定義的 .NET CSV 編寫器或 .NET CSV 解析器,支持多列、僅影響當前處理的行的行特定功能,以及自動推斷分隔符。

IronXL 的入門步驟

通過 NuGet 套件管理器安裝 IronXL 只需幾秒鐘:

Install-Package IronXL.Excel

安裝後,添加 IronXL 命名空間即可開始創建 CSV 文件並有效地處理分隔值:

using IronXL;
class Program
{
    static void Main(string[] args)
    {
        // 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
        workSheet["A2"].Value = "Widget";
        workSheet["B2"].Value = 100;
        workSheet["C2"].Value = 19.99;
        // Save as CSV with comma delimiter
        workBook.SaveAsCsv("inventory.csv", ",");
    }
}
using IronXL;
class Program
{
    static void Main(string[] args)
    {
        // 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
        workSheet["A2"].Value = "Widget";
        workSheet["B2"].Value = 100;
        workSheet["C2"].Value = 19.99;
        // Save as CSV with comma delimiter
        workBook.SaveAsCsv("inventory.csv", ",");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

這個簡單的控制台測試程序展示了如何直接從 C# 代碼中編寫 CSV 內容,創建包含我們數據的 工作簿 對象。 SaveAsCsv 方法 使用默認分隔符(逗號),但允許您選擇為不同的地區定義 sep; 這在處理小數分隔符或替代列分隔符時特別有用。 在內部,sep 處理輸出緩衝區的陣列分配。 前面提到的 sep 參數允許您定義此字符。

我們還展示了如何提供靜態進入點,並顯示如何使用靜態定義的資源池進行有效的內存管理,允許在多行中執行高性能操作。

高級 CSV 文件創建技術

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

高級 CSV 文件創建技術

將 Excel 工作簿轉換為 CSV

IronXL 在 將現有的 Excel 文件轉換為 CSV、計算公式和保持數據完整性方面表現出色。 這對於寫入包含標題行和動態生成數據的 CSV 文件至關重要。

// Load an Excel file with formulas and formatting
WorkBook workBook = WorkBook.Load("financial_report.xlsx");
// IronXL evaluates formulas before export
workBook.EvaluateAll();
// Export to CSV - each worksheet creates a separate CSV file
workBook.SaveAsCsv("report.csv", ",");
// Creates: report.Sheet1.csv, report.Sheet2.csv, etc.
// Load an Excel file with formulas and formatting
WorkBook workBook = WorkBook.Load("financial_report.xlsx");
// IronXL evaluates formulas before export
workBook.EvaluateAll();
// Export to CSV - each worksheet creates a separate CSV file
workBook.SaveAsCsv("report.csv", ",");
// Creates: report.Sheet1.csv, report.Sheet2.csv, etc.
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

在轉換多工作表的工作簿時,IronXL 自動為每個工作表生成單獨的 CSV 文件。 公式計算在導出之前執行,確保最終 CSV 輸出中的數據準確。 但這不僅僅是該功能。 默認自動推斷的分隔符確保了跨地區的兼容性,多行或多列的處理無縫流暢。

您還可以在動態環境中使用可以為空的 sep,其中默認支持的分隔符有所不同。

輸出

首先,在此您可以看到從我們的多工作表 Excel 文件中生成的 CSV 文件:

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

這是其中的 Excel 工作表與對應的 CSV 文件的示例比較:

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

導出 DataTable 到 CSV

對於數據庫驅動的應用程式,IronXL 簡化了DataTable 導出。 我們將 var 設置為 Datarow 而不是典型的 ref var v,以便更清晰。

// Assume dataTable contains query results
DataTable dataTable = GetSalesData();
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");
// Import DataTable directly
var row = 1;
foreach (var dataRow in dataTable.Rows)
{
    for (var col = 0; col < dataTable.Columns.Count; col++)
    {
        workSheet.SetCellValue(row, col, dataRow[col].ToString());
    }
    row++;
}
// Export with custom delimiter if needed
workBook.SaveAsCsv("sales_data.csv", ";");
// Assume dataTable contains query results
DataTable dataTable = GetSalesData();
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");
// Import DataTable directly
var row = 1;
foreach (var dataRow in dataTable.Rows)
{
    for (var col = 0; col < dataTable.Columns.Count; col++)
    {
        workSheet.SetCellValue(row, col, dataRow[col].ToString());
    }
    row++;
}
// Export with custom delimiter if needed
workBook.SaveAsCsv("sales_data.csv", ";");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

在導入時,來自 dataTable.Rows 集合中的每個水平數據行集變成工作表中的新行。 IronXL 在轉換過程中保持數據類型,意味著數字保持數字格式,日期保持格式,文本正確處理特殊字符而無需額外配置。

輸出

在這裡,您可以看到我們的模擬數據源緊挨著輸出的 CSV 文件:

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

IronXL 與 CsvHelper:編寫 CSV 文件的並排比較

考慮到這個員工數據導出場景演示了 CSV 解析和寫入工作流程。

CsvHelper 實施:

using (var writer = new StreamWriter("employees.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(employees);
}
using (var writer = new StreamWriter("employees.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(employees);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronXL 實施:

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("employees");
// Add data with automatic type handling
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", ",");
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("employees");
// Add data with automatic type handling
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", ",");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

功能

CsvHelper

IronXL

基本的 CSV 寫入

Excel 到 CSV 轉換

公式計算

多工作表處理

數據類型保留

手動

自動

Excel 格式支持

XLSX, XLS, XLSM

不需要 MS Office

儘管 CsvHelper 能夠有效地處理簡單的寫入列操作,但 IronXL 提供了在多行、內插字符串及動態代碼生成場景中工作的靈活性,甚至可以允許使用像 ref 結構鏈接這樣的低級優化。

開發人員可以枚舉符合特定標準的行,管理默認的自動推斷分隔符,甚至能夠測試簡單的控制台程序,暴露行特定功能和每個條目的關鍵以供調試。

企業特徵和最佳實踐

IronXL 的 SaveAsCsv 方法包含企業級功能:

  • 自定義分隔符:支持逗號、分號、製表符或任何字符(可以用分隔符 sep 覆蓋默認分隔符)
  • 編碼選項:UTF-8、UTF-16 和自定義編碼
  • 公式計算:在導出前計算 Excel 公式
  • 跨平台支持:適用於 Windows、Linux 和 macOS

開發人員還可以應用擴展方法來訪問多列以進行高效處理,或寫入跨多行的 CSV 行,當需要文本換行時。

常見問題和解決方案

在處理 CSV 導出時,開發人員經常會遇到這些挑戰:

  • 資料中特殊字元:IronXL 會自動跳脫引號、逗號和換行符
  • 大型文件處理:使用工作表範圍 以區塊方式處理資料,
  • 編碼問題:為國際字元指定 UTF-8 編碼
  • 缺少數據類型:IronXL 默認保留數字和日期格式

For detailed troubleshooting, visit IronXL's CSV documentation, API reference, and support resources.

今天就開始構建您的 CSV 編寫器

IronXL 將 CSV 編寫從解析挑戰轉變為簡單的操作。 通過將 CSV 功能與 Excel 工作簿支持、公式計算和自動類型處理結合在一起,消除了管理多個庫或手動數據轉換的複雜性。

準備好簡化您的 CSV 工作流程了嗎? 開始您的免費試用,起價為 $liteLicense。

常見問題解答

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 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。