如何在 C# 中讀取帶有逗號的 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這個簡單的控制台測試程式示範如何直接從 C# 程式碼寫入 CSV 內容,並建立一個包含我們資料的Workbook物件。 SaveAsCsv 方法使用預設分隔符號(逗號),但允許您選擇性地為不同的語言環境定義分隔符號; 這在處理小數分隔符號或交替列分隔符號字元時尤其有用。 內部,sep 處理輸出緩衝區的陣列分配。 前面提到的 sep 參數可讓您定義此字元。
我們也示範如何提供靜態入口點,並展示如何使用靜態定義的資源池進行高效的記憶體管理,從而實現跨多行的高效能。
進階 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轉換多工作表工作簿時,IronXL 會自動為每個工作表產生單獨的 CSV 檔案。 公式計算在匯出前執行,確保最終 CSV 輸出的資料準確無誤。 但這並非它唯一的特色。 預設的自動推斷分隔符號確保了跨區域的兼容性,並且可以無縫處理多行或多列。
對於預設支援的分隔符號會變化的動態環境,您也可以使用可為空的分隔符號。
輸出
首先,您可以在這裡看到由我們的多工作表 Excel 檔案產生的 CSV 檔案:
如何在 C# 中讀取帶逗號的 CSV 檔案:圖 2 - CSV 文件
以下是一個Excel表格與對應CSV檔案的比較範例:
將資料表匯出為 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匯入時,dataTable.Rows 集合中的每一行水平資料都會成為工作表中的新行。 IronXL 在轉換過程中保留資料類型,這表示數字保持數值形式,日期保持格式,文字無需額外配置即可正確處理特殊字元。
輸出
在這裡,您可以看到我們的模擬資料來源以及輸出的 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.comIronXL實施:
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特點 | 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。
常見問題解答
為什麼 .NET 開發人員需要更好的 CSV 解決方案?
.NET 開發人員在處理包含內嵌逗號或特殊字符的 CSV 檔案時,經常會遇到挑戰。IronXL 提供了先進的功能,可以毫不費力地處理這些複雜的問題,提高資料解析的準確性和效率。
IronXL 如何處理 CSV 檔案中的引號欄位?
IronXL 旨在準確解析包含引號欄位的 CSV 檔案,確保包含逗號或其他特殊字符的資料能被正確詮釋和處理,不會發生錯誤。
在 C# 中使用 IronXL 進行 CSV 解析有哪些好處?
IronXL 提供強大的 CSV 檔案解析功能,包括支援特殊字符、引號欄位和大型資料集。這可增強可靠性,並減少開發人員花在除錯 CSV 相關問題上的時間。
IronXL 可以處理具有特殊字符的 CSV 檔案嗎?
是的,IronXL 可以處理包含各種特殊字符的 CSV 檔案,確保所有資料都能準確讀取和處理,不會造成解析錯誤或資料遺失。
IronXL 與其他 CSV 解析函式庫有何不同?
IronXL 的優勢在於能夠輕易處理複雜的 CSV 情境,例如內嵌逗號和帶引號的欄位。其友好的 API 和全面的功能使其成為用 C# 處理 CSV 資料的開發人員的首選。
是否可以使用 IronXL 處理大型 CSV 檔案?
IronXL 已針對效能進行最佳化,能夠有效率地處理大型 CSV 檔案,因此適合處理大量資料集的應用程式。
IronXL 如何提高 CSV 資料處理的可靠性?
IronXL 可準確處理包含內嵌逗號和特殊字符的 CSV 檔案,降低資料解析過程中出錯的可能性,並確保資料的完整性,從而增強可靠性。









