如何在 .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只需幾秒鐘。 您可以使用Package Manager Console或.NET CLI:
安裝完成後,新增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", ",");Imports IronXL
' Create a new workbook and worksheet
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As 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.5
workSheet("A4").Value = "Component"
workSheet("B4").Value = 75
workSheet("C4").Value = 8.99
' Save as CSV with comma delimiter
workBook.SaveAsCsv("inventory.csv", ",")Imports IronXL
' Create a new workbook and worksheet
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As 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.5
workSheet("A4").Value = "Component"
workSheet("B4").Value = 75
workSheet("C4").Value = 8.99
' Save as CSV with comma delimiter
workBook.SaveAsCsv("inventory.csv", ",")這個簡單的程式顯示了如何直接從C#程式碼編寫CSV內容,建立一個WorkBook物件以保存您的資料。 SaveAsCsv方法使用逗號作為預設分隔符,但允許您指定任何分隔符字元——這對於以分號或製表符為標準列分隔符的特定地區場景特別有用。
了解WorkBook和WorkSheet模型
IronXL通過工作簿到工作表的層次結構來組織資料。 WorkBook作為一個或多個WorkSheet物件的容器,每個都代表一個單元格網格。 當您導出到CSV時,IronXL會為每個工作表建立一個文件,並以filename.SheetName.csv的模式命名它們。
無論您是從頭建立新文件、載入現有Excel工作簿,還是從資料庫中導出資料,此模型為您提供了一個一致的API。 您可以使用標準的Excel符號(A1, 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");Imports IronXL
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As 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", vbTab)Imports IronXL
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As 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", vbTab)分隔符字串直接進入分隔符字元槽,不需要額外的解析配置。 IronXL處理包含分隔符字元的單元格的引用,確保輸出符合RFC 4180。
如何將Excel工作簿轉換為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", ",");Imports IronXL
' Load an Excel file with formulas and formatting
Dim workBook As 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", ",")Imports IronXL
' Load an Excel file with formulas and formatting
Dim workBook As 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", ",")在轉換多工作表工作簿時,IronXL自動為每個工作表生成單獨的CSV文件。 公式計算在導出之前執行,以確保最終CSV輸出中的資料準確無誤。 EvaluateAll方法在寫入文件之前解決所有公式(包括跨工作表引用)。
輸出
首先,您可以看到從多工作表Excel文件生成的CSV文件:

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

如何將DataTable導出到CSV?
對於以資料庫為驅動的應用程式,IronXL使得DataTable導出變得簡單。 以下範例從模擬資料源中讀取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", ";");Imports System.Data
Imports IronXL
' Simulate a DataTable from a database query
Dim dataTable As DataTable = GetSalesData()
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("sales")
' Write column headers from DataTable schema
For col As Integer = 0 To dataTable.Columns.Count - 1
workSheet.SetCellValue(0, col, dataTable.Columns(col).ColumnName)
Next
' Write data rows
Dim row As Integer = 1
For Each dataRow As DataRow In dataTable.Rows
For col As Integer = 0 To dataTable.Columns.Count - 1
workSheet.SetCellValue(row, col, If(dataRow(col)?.ToString(), String.Empty))
Next
row += 1
Next
' Export with semicolon delimiter for European compatibility
workBook.SaveAsCsv("sales_data.csv", ";")Imports System.Data
Imports IronXL
' Simulate a DataTable from a database query
Dim dataTable As DataTable = GetSalesData()
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("sales")
' Write column headers from DataTable schema
For col As Integer = 0 To dataTable.Columns.Count - 1
workSheet.SetCellValue(0, col, dataTable.Columns(col).ColumnName)
Next
' Write data rows
Dim row As Integer = 1
For Each dataRow As DataRow In dataTable.Rows
For col As Integer = 0 To dataTable.Columns.Count - 1
workSheet.SetCellValue(row, col, If(dataRow(col)?.ToString(), String.Empty))
Next
row += 1
Next
' Export with semicolon delimiter for European compatibility
workBook.SaveAsCsv("sales_data.csv", ";")從dataTable.Rows集合中的每一行成為工作表中的新行。 IronXL在轉換過程中保持資料型別的穩定——數字保持數值格式,日期保持其格式,文字處理特殊字元而不需額外配置。
輸出
在這裡,您可以看到模擬資料源與輸出CSV文件:

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);Imports System.Globalization
Imports System.IO
Imports CsvHelper
Using writer As New StreamWriter("employees.csv")
Using csv As New CsvWriter(writer, CultureInfo.InvariantCulture)
csv.WriteRecords(employees)
End Using
End UsingImports System.Globalization
Imports System.IO
Imports CsvHelper
Using writer As New StreamWriter("employees.csv")
Using csv As New CsvWriter(writer, CultureInfo.InvariantCulture)
csv.WriteRecords(employees)
End Using
End UsingIronXL實現:
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", ",");Imports IronXL
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("employees")
Dim rowIndex As Integer = 1
For Each emp In employees
workSheet($"A{rowIndex}").Value = emp.Name
workSheet($"B{rowIndex}").Value = emp.Salary
workSheet($"C{rowIndex}").Value = emp.StartDate
rowIndex += 1
Next
workBook.SaveAsCsv("employees.csv", ",")Imports IronXL
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("employees")
Dim rowIndex As Integer = 1
For Each emp In employees
workSheet($"A{rowIndex}").Value = emp.Name
workSheet($"B{rowIndex}").Value = emp.Salary
workSheet($"C{rowIndex}").Value = emp.StartDate
rowIndex += 1
Next
workBook.SaveAsCsv("employees.csv", ",")| 功能 | CsvHelper | IronXL |
|---|---|---|
| 基本的CSV寫作 | 是 | 是 |
| Excel到CSV轉換 | 否 | 是 |
| 公式評估 | 否 | 是 |
| 多工作表處理 | 否 | 是 |
| 資料型別保持 | 手動 | 自動的 |
| Excel格式支持(XLSX, XLS, XLSM) | 否 | 是 |
| 不需MS Office | 是 | 是 |
| 單元格格式和樣式 | 否 | 是 |
| 跨平台(.NET 10支持) | 是 | 是 |
CsvHelper高效地處理POCO物件的簡單序列化。 當您需要載入現有Excel文件、預先評估公式或以精細的控制方式管理工作表範圍時,IronXL提供了額外功能。 如果您的工作流程涉及從業務使用者接收.xlsx文件並將其轉換為下游系統的CSV,則IronXL移除了一整個轉換步驟。
IronXL為CSV導出提供了哪些企業級功能?
IronXL的SaveAsCsv方法具有多個生產就緒的功能:
| 功能 | 描述 | 使用範例 |
|---|---|---|
| 自定義分隔符 | 逗號、分號、制表符或任何字元 | 地區地區相容性 |
| 編碼選項 | UTF-8、UTF-16和自定義編碼 | 國際字元集 |
| 公式評估 | 在導出之前計算Excel公式 | 財務報告,動態資料 |
| 跨平台支持 | Windows, Linux, macOS | 雲端和容器部署 |
| 多表單導出 | 每個工作表一個CSV文件 | 複雜的工作簿結構 |
| RFC 4180合規性 | 特殊字元的自動引用 | 保證互操作性 |
您可以在導出之前應用單元格資料格式化,以控制數字、貨幣和日期在CSV輸出中的顯示。 對於大型資料集,使用工作表範圍操作以區塊形式處理資料,保持記憶體使用的可預測性。
跨平台支持意味著您可以將IronXL驅動的CSV生成部署到Kubernetes或Azure App Service的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", ",");Imports IronXL
' Load an existing CSV file into a workbook
Dim workBook As WorkBook = WorkBook.Load("sales_data.csv")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
' Iterate over rows and process data
For Each row In workSheet.Rows
Dim product As String = row("A").ToString()
Dim quantity As Integer = row("B").IntValue
Dim price As Decimal = CType(row("C").DoubleValue, Decimal)
Console.WriteLine($"Product: {product}, Qty: {quantity}, Price: {price:C}")
Next
' Apply a filter and re-export to a new CSV
workBook.SaveAsCsv("filtered_output.csv", ",")Imports IronXL
' Load an existing CSV file into a workbook
Dim workBook As WorkBook = WorkBook.Load("sales_data.csv")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
' Iterate over rows and process data
For Each row In workSheet.Rows
Dim product As String = row("A").ToString()
Dim quantity As Integer = row("B").IntValue
Dim price As Decimal = CType(row("C").DoubleValue, Decimal)
Console.WriteLine($"Product: {product}, Qty: {quantity}, Price: {price:C}")
Next
' Apply a filter and re-export to a new CSV
workBook.SaveAsCsv("filtered_output.csv", ",")通過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);
}Imports IronXL
Dim workBook As WorkBook = WorkBook.Load("input.xlsx")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
Dim errors As New List(Of String)()
For rowIdx As Integer = 1 To workSheet.RowCount
Dim productName As String = workSheet($"A{rowIdx}").StringValue
Dim price As Double = workSheet($"C{rowIdx}").DoubleValue
If String.IsNullOrWhiteSpace(productName) Then
errors.Add($"Row {rowIdx}: Product name is empty.")
End If
If price <= 0 Then
errors.Add($"Row {rowIdx}: Price must be greater than zero (found {price}).")
End If
Next
If errors.Count = 0 Then
workBook.SaveAsCsv("validated_output.csv", ",")
Console.WriteLine("Export complete.")
Else
For Each error As String In errors
Console.WriteLine(error)
Next
End IfImports IronXL
Dim workBook As WorkBook = WorkBook.Load("input.xlsx")
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
Dim errors As New List(Of String)()
For rowIdx As Integer = 1 To workSheet.RowCount
Dim productName As String = workSheet($"A{rowIdx}").StringValue
Dim price As Double = workSheet($"C{rowIdx}").DoubleValue
If String.IsNullOrWhiteSpace(productName) Then
errors.Add($"Row {rowIdx}: Product name is empty.")
End If
If price <= 0 Then
errors.Add($"Row {rowIdx}: Price must be greater than zero (found {price}).")
End If
Next
If errors.Count = 0 Then
workBook.SaveAsCsv("validated_output.csv", ",")
Console.WriteLine("Export complete.")
Else
For Each error As String In errors
Console.WriteLine(error)
Next
End If這種模式在ETL管道中特別有用,其中不良行應被拒絕——並記錄——而不是靜默導出。 IronXL的Cell物件的單元格資料存取方法返回強型別值,降低了靜默型別攔截錯誤的風險。
如何開始使用IronXL編寫CSV?
IronXL將CSV寫作從解析挑戰轉變為直接操作。 通過將CSV功能與Excel工作簿支持、公式評估和自動型別處理相結合,它消除了管理多個函式庫或手動資料轉換的複雜性。
免費試用讓您能夠全面存取所有功能——包括多表單導出、公式評估和跨平台部署——在開發過程中無需授權金鑰。 當您準備好投入生產時,授權從覆蓋商業用途的單一開發人員層開始。
入門的關鍵資源:
- IronXL文件——完整的API參考和使用指南
- CSV到Excel的轉換指南——詳細的格式轉換指南
- DataTable導出教程——以資料庫為驅動的導出模式
- 工作表範圍操作——高效處理大型資料集
- 故障排除指南——常見整合問題的解決方案
準備好構建生產就緒的CSV工作流嗎? 開始您的免費試用,並在五分鐘內完成您的第一次CSV導出運行。
Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。
