跳過到頁腳內容
使用 IRONXL

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

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

CSV 檔案為無數 .NET 應用程式提供資料交換支援。 從財務報告到庫存系統,您只需幾行程式碼即可自由地以程式設計方式建立 CSV 檔案。 雖然像CsvHelper這樣的程式庫涵蓋了基本的 CSV 操作,但現代開發人員面臨著複雜的場景:轉換帶有公式的 Excel 工作簿、在匯出過程中保留資料類型以及處理企業級電子表格工作流程。 IronXL透過將強大的 CSV 寫入功能與全面的Excel 功能相結合,在一個遵循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 內容,並建立一個包含我們資料的Workbook物件。 SaveAsCsv 方法使用預設分隔符號(逗號),但允許您選擇性地為不同的語言環境定義分隔符號; 這在處理小數分隔符號或交替列分隔符號字元時尤其有用。 內部,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 輸出的資料準確無誤。 但這並非它唯一的特色。 預設的自動推斷分隔符號確保了跨區域的兼容性,並且可以無縫處理多行或多列。

對於預設支援的分隔符號會變化的動態環境,您也可以使用可為空的分隔符號。

輸出

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

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

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

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

將資料表匯出為 CSV

對於資料庫驅動型應用程序,IronXL 簡化了資料表匯出流程。 為了更清楚地說明,我們將變數設為 Datarow 而不是典型的引用變數 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 - 將資料表匯出為 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

無需微軟辦公室軟體

雖然 CsvHelper 可以有效率地處理簡單的寫入列操作,但 IronXL 提供了處理多行、插值字串和動態程式碼產生場景的靈活性,甚至允許使用 ref struct link 等構造進行低階優化。

開發人員可以列舉符合特定條件的行,管理預設的自動推斷分隔符,甚至可以使用簡單的控制台程式進行測試,這些程式會公開特定於行的功能以及每個條目的鍵以進行調試。

企業功能和最佳實踐

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

  • 自訂分隔符號:支援逗號、分號、製表符或任何字元(可使用 separator sep 覆寫預設分隔符號)
  • 編碼選項:UTF-8、UTF-16 和自訂編碼
  • 公式評估:匯出前計算 Excel 公式
  • 跨平台支援:可在 Windows、Linux 和 macOS 上運行

開發人員還可以應用擴展方法來存取多列以進行高效處理,或者在需要文字換行時編寫跨越多行的 CSV 行。

常見問題及解決方案

在使用 CSV 匯出檔案時,開發人員經常會遇到以下挑戰:

*資料中的特殊字元*:IronXL 會自動轉義引號、逗號和換行符。 大檔案處理:使用工作表區域分塊處理數據, 編碼問題:請為國際字元指定 UTF-8 編碼。 缺少的資料類型**:IronXL 預設保留數值和日期格式。

如需詳細故障排除,請造訪IronXL 的 CSV 文件API 參考支援資源

立即開始建立您的 CSV 寫入器

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

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

常見問題解答

IronXL 用來做什麼?

IronXL 是專為 Excel 檔案設計的 .NET 函式庫,可讓開發人員建立、讀取和修改 Excel 文件,並將其匯出為 CSV 等各種格式,同時保留資料類型和管理複雜的試算表情境。

IronXL 如何協助在 .NET 中撰寫 CSV?

IronXL.Excel 提供將 Excel 工作簿匯出為 CSV 格式的功能,可確保資料類型得以保留,並有效處理複雜的試算表情境,是需要強大 CSV 撰寫解決方案的 .NET 開發人員的理想選擇。

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

開發人員應考慮使用 IronXL,因為它能夠將 Excel 檔案無縫匯出為 CSV、處理大型資料集、維持資料類型的完整性,為 .NET 應用程式中的 CSV 作業提供優異的解決方案。

使用 IronXL 進行試算表管理有哪些好處?

使用 IronXL 進行試算表管理的好處包括:可輕鬆操作 Excel 文件、支援 CSV 等多種匯出格式,以及可在 .NET 應用程式中有效率地處理複雜的資料結構和大型資料集。

IronXL.Excel 在匯出為 CSV 時,可以處理大型 Excel 檔案嗎?

是的,IronXL.Excel 旨在高效處理大型 Excel 檔案,讓開發人員可以將大量資料匯出至 CSV,而不會影響效能或資料完整性。

IronXL 在匯出至 CSV 時,如何確保資料類型的保存?

IronXL.Excel 透過準確地將 Excel 資料轉換為 CSV 格式,確保資料類型的保存,同時維持原始的資料類型和結構,這對於需要精確資料處理的應用程式而言至關重要。

IronXL 是否適合複雜的試算表情境?

IronXL.Excel 非常適合複雜的試算表情境,提供進階功能來管理和處理複雜的 Excel 文件,並確保資料能精確地匯出為 CSV 或其他格式。

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