使用 C# CSV 解析器簡化資料處理(指南)
CSV(逗號分隔值)檔案仍然是應用程式、資料庫和系統之間資料交換最廣泛使用的格式之一。 儘管 CSV 檔案解析看起來很簡單,但在 C# 中正確解析 CSV 檔案很快就會變成一個具有挑戰性的問題。 從處理包含逗號的帶引號的欄位到管理資料單元格中的換行符,CSV 處理的細微差別需要的不僅僅是基本的字串操作。
許多開發者一開始都採用簡單的 string.Split(',') 方法,結果卻發現現實世界的 CSV 檔案會以無數種方式破壞這些基本實作。 處理具有多列的大型資料集時會出現效能問題,記憶體消耗增加,並且極端情況會導致難以偵錯的資料損壞。 這些挑戰導致人們花費無數時間編寫和維護自訂 CSV 解析程式碼,但這些程式碼仍然無法正確處理所有情況。
IronXL提供了一種解決方案,可以將 CSV 處理從令人沮喪的源泉轉變為可靠的操作。 作為一個完整的.NET Excel 庫,IronXL 能夠處理 CSV 解析的複雜性,同時提供與 Excel 格式的集成,使其成為處理多種資料格式的應用程式的理想選擇。 無論是匯入客戶資料、處理財務記錄或管理庫存文件,IronXL 的 C# CSV 庫解析器都能消除困擾自訂實作的常見陷阱。
IronXL 首頁展示了用於讀取 Excel 檔案的 C# 程式碼範例,無需 Microsoft Office 互通相依性。
C#中CSV解析的複雜之處是什麼?
CSV 檔案看似簡單,其實隱藏著處理真實世界資料時會遇到的諸多挑戰。 雖然格式看起來很簡單——值之間用逗號分隔——但實際上卻涉及到處理多個極端情況和效能方面的考慮,這可能會破壞基本的解析方法。 根據Stack Overflow上的討論,即使是經驗豐富的開發人員也難以正確處理 CSV 檔案。 Microsoft .NET 文件輸入/輸出文件提供了底層原語的背景信息,說明了為什麼從頭開始構建一個可用於生產的 CSV 解析器是一項重大的任務。
為什麼基本的字串分割會失敗?
考慮一下初學者解析 CSV 檔案最常見的方法:
string line = "John,Doe,30,Engineer";
string[] values = line.Split(','); // string array
string line = "John,Doe,30,Engineer";
string[] values = line.Split(','); // string array
Dim line As String = "John,Doe,30,Engineer"
Dim values As String() = line.Split(","c) ' string array
對於簡單情況,這種方法效果很好,但遇到真實世界的數據時,就會立即失效。 帶有嵌入式逗號的引號字段是一個主要問題:像 "Smith, John",Developer,"New York, NY",50000 這樣的 CSV 行會被拆分成五個字段而不是四個字段,從而破壞資料結構,導致後續處理中的錯位。
欄位內的換行符號也會導致問題。 根據 RFC 4180,欄位在正確引用時可以包含換行符號。 多行位址欄位打破了逐行讀取的方法,需要複雜的狀態管理來追蹤換行符號是出現在引號的欄位中還是代表新記錄。
轉義字元和引號處理會帶來更多複雜情況。 CSV 檔案使用各種約定來轉義帶引號欄位中的引號。 有些使用雙引號(""),而有些則使用反斜線或其他轉義字元。 如果處理不當,像 "She said, ""Hello!""",greeting 這樣的資料就會損壞或導致解析錯誤。
不同的分隔符號和編碼方式增加了複雜性。 並非所有"CSV"檔案都使用逗號。 製表符分隔值 (TSV)、管道符分隔檔案和分號分隔值是常見的變體。 RFC 4180 標準定義了 CSV 格式規範,但許多實作方式都與該規範有所不同。
記憶體管理如何影響大檔案處理?
使用 File.ReadAllLines() 將 500MB CSV 檔案完全載入到記憶體中可能會導致嚴重的效能下降或記憶體不足異常。 處理數百萬行資料需要串流處理方法和高效的記憶體管理,以保持應用程式的回應能力。
當處理來自不同來源的 CSV 檔案時,這些複雜性會進一步加劇,因為每個來源可能會使用不同的約定。 建構一個能夠可靠處理所有場景的解析器需要大量的開發工作,並且隨著新的極端情況的出現,還需要持續的維護。
IronXL如何處理CSV檔案?
IronXL 提供了一個解析器,可以處理現實世界中 CSV 的複雜性,同時保持易用性。 IronXL 不強迫開發者重複造輪子,而是透過直覺的 API 提供解決方案,解決所有常見的 CSV 問題。
解析器的智慧引擎會自動偵測和處理資料中的引號欄位、嵌入式分隔符號和換行符。 該引擎無需手動配置即可適應不同的 CSV 方言,無論文件遵循嚴格的 RFC 4180 標準還是使用常見變體,都能正確解釋文件。
內建靈活的分隔符號支援。 雖然逗號仍然是預設分隔符,但 IronXL 可以透過簡單的配置選項處理任何分隔符。 無論是處理製表符分隔的文件、管道符分隔的匯出文件,還是分號分隔的歐洲格式,同一個 API 都能一致地處理所有變體。
與Excel的整合是另一個關鍵優勢。 與獨立的 CSV 解析器不同,IronXL 提供 CSV 和 Excel 格式之間的雙向轉換。 此功能支援將 CSV 資料匯入 Excel 工作簿以進行高級格式設定、公式應用和圖表生成等工作流程——所有這些都可以透過 C# 程式碼以程式設計方式完成。

如何安裝 IronXL 進行 CSV 解析?
安裝 IronXL 只需幾個簡單的步驟。 該程式庫透過微軟的套件管理系統 NuGet 整合到任何 .NET 專案中。 您可以造訪IronXL NuGet 安裝指南以取得詳細的安裝說明。
安裝步驟有哪些?
透過 NuGet 套件管理器控制台或 .NET CLI 安裝 IronXL:
# NuGet Package Manager Console
Install-Package IronXL.Excel
# .NET CLI
dotnet add package IronXL.Excel
# NuGet Package Manager Console
Install-Package IronXL.Excel
# .NET CLI
dotnet add package IronXL.Excel
如何載入你的第一個 CSV 檔案?
安裝完成後,將 IronXL 命名空間新增到您的 C# 檔案中,然後載入一個只有幾行的 CSV 檔案:
using IronXL;
// Load a CSV file using top-level statements
WorkBook workbook = WorkBook.LoadCSV("customers.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Read a specific cell value
string customerName = sheet["B2"].StringValue;
Console.WriteLine($"Customer: {customerName}");
using IronXL;
// Load a CSV file using top-level statements
WorkBook workbook = WorkBook.LoadCSV("customers.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Read a specific cell value
string customerName = sheet["B2"].StringValue;
Console.WriteLine($"Customer: {customerName}");
Imports IronXL
' Load a CSV file using top-level statements
Dim workbook As WorkBook = WorkBook.LoadCSV("customers.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Read a specific cell value
Dim customerName As String = sheet("B2").StringValue
Console.WriteLine($"Customer: {customerName}")
WorkBook.LoadCSV() 方法能夠智慧地解析 CSV 文件,自動偵測分隔符號並處理引號的欄位。 由於 CSV 檔案包含單一工作表,因此可以透過 DefaultWorkSheet 存取資料。 類型化存取器 StringValue 提供型別安全的數值檢索。
輸入
! Excel 電子表格顯示了一個客戶資料庫,其中包含 CustomerID、FirstName、LastName、Email、City 和 Country 列,以及 10 行範例客戶資料。
輸出
如何使用 IronXL 讀取 CSV 檔案?
使用 IronXL 讀取 CSV 檔案提供了多種方法,可應對不同的場景,從簡單的資料提取到複雜的處理工作流程。 IronXL 功能頁面提供了所有功能的完整概述,而開啟的工作簿指南則深入介紹了工作簿處理。
! C# 電子表格操作庫的功能概述,展示了六個主要類別:建立、儲存和匯出、編輯工作簿、處理資料、保護工作簿和處理儲存格。
如何遍歷 CSV 檔案中的行?
最直接的方法是使用預設設置,遍歷所有行:
using IronXL;
WorkBook workbook = WorkBook.LoadCSV("sales_data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Iterate through all data rows (skipping header at row 0)
for (var row = 1; row <= sheet.RowCount; row++)
{
string productName = sheet[$"A{row}"].StringValue;
decimal price = sheet[$"B{row}"].DecimalValue;
int quantity = sheet[$"C{row}"].IntValue;
Console.WriteLine($"Product: {productName}, Price: ${price}, Qty: {quantity}");
}
using IronXL;
WorkBook workbook = WorkBook.LoadCSV("sales_data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Iterate through all data rows (skipping header at row 0)
for (var row = 1; row <= sheet.RowCount; row++)
{
string productName = sheet[$"A{row}"].StringValue;
decimal price = sheet[$"B{row}"].DecimalValue;
int quantity = sheet[$"C{row}"].IntValue;
Console.WriteLine($"Product: {productName}, Price: ${price}, Qty: {quantity}");
}
Imports IronXL
Dim workbook As WorkBook = WorkBook.LoadCSV("sales_data.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Iterate through all data rows (skipping header at row 0)
For row As Integer = 1 To sheet.RowCount
Dim productName As String = sheet($"A{row}").StringValue
Dim price As Decimal = sheet($"B{row}").DecimalValue
Dim quantity As Integer = sheet($"C{row}").IntValue
Console.WriteLine($"Product: {productName}, Price: ${price}, Qty: {quantity}")
Next row
IronXL 的類型化存取器會自動將文字轉換為對應的 .NET 類型,無需手動解析。 循環繼續遍歷所有行,使用 RowCount,這準確地反映了檔案中的資料行總數。
如何處理非標準分隔符號?
對於使用非標準分隔符號的 CSV 文件,IronXL 透過 listDelimiter 參數提供設定選項:
using IronXL;
// Load a tab-separated file
WorkBook workbook = WorkBook.LoadCSV("inventory.tsv",
fileFormat: ExcelFileFormat.XLSX,
listDelimiter: "\t");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Build header list from column 0
var headers = new List<string>();
for (int col = 0; col < sheet.ColumnCount; col++)
{
headers.Add(sheet.GetCellAt(0, col).StringValue);
}
Console.WriteLine("Columns: " + string.Join(" | ", headers));
using IronXL;
// Load a tab-separated file
WorkBook workbook = WorkBook.LoadCSV("inventory.tsv",
fileFormat: ExcelFileFormat.XLSX,
listDelimiter: "\t");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Build header list from column 0
var headers = new List<string>();
for (int col = 0; col < sheet.ColumnCount; col++)
{
headers.Add(sheet.GetCellAt(0, col).StringValue);
}
Console.WriteLine("Columns: " + string.Join(" | ", headers));
Imports IronXL
' Load a tab-separated file
Dim workbook As WorkBook = WorkBook.LoadCSV("inventory.tsv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:=vbTab)
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Build header list from column 0
Dim headers As New List(Of String)()
For col As Integer = 0 To sheet.ColumnCount - 1
headers.Add(sheet.GetCellAt(0, col).StringValue)
Next
Console.WriteLine("Columns: " & String.Join(" | ", headers))
listDelimiter 參數指定欄位分隔符號 -- 此處為 TSV 檔案的製表符。 fileFormat 參數決定解析後的內部表示。 您可以了解更多關於讀取 Excel 文件的信息,以了解更多文件格式選項。

Visual Studio 偵錯控制台顯示 CSV 欄位標題:ItemID、ItemName、Category、Quantity、UnitPrice 和 Supplier
如何處理複雜的 CSV 場景?
現實世界中的 CSV 檔案通常包含複雜的結構,簡單的解析方法很難奏效。 IronXL 能夠優雅地處理這些具有挑戰性的場景,為引號的欄位、特殊字元和編碼問題提供解決方案。 IronXL 文件詳細介紹了所有進階場景。
IronXL 如何處理引號的欄位和特殊字元?
IronXL 可以自動處理帶有分隔符號的帶引號欄位的 CSV 檔案。 解析器遵循 CSV 標準,將雙引號視為轉義序列:
using IronXL;
// Create sample CSV with complex quoted fields
string csvContent = @"Name,描述,Price,Category
""Johnson, Mike"",""Premium keyboard with mechanical switches"",149.99,Electronics
""O'Brien, Sarah"",""Children's toy - ages 3+"",29.99,Toys";
File.WriteAllText("complex_data.csv", csvContent);
WorkBook workbook = WorkBook.LoadCSV("complex_data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
for (int row = 1; row <= sheet.RowCount; row++)
{
string name = sheet[$"A{row}"].StringValue;
string description = sheet[$"B{row}"].StringValue;
Console.WriteLine($"Name: {name}");
Console.WriteLine($"描述: {description}");
}
using IronXL;
// Create sample CSV with complex quoted fields
string csvContent = @"Name,描述,Price,Category
""Johnson, Mike"",""Premium keyboard with mechanical switches"",149.99,Electronics
""O'Brien, Sarah"",""Children's toy - ages 3+"",29.99,Toys";
File.WriteAllText("complex_data.csv", csvContent);
WorkBook workbook = WorkBook.LoadCSV("complex_data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
for (int row = 1; row <= sheet.RowCount; row++)
{
string name = sheet[$"A{row}"].StringValue;
string description = sheet[$"B{row}"].StringValue;
Console.WriteLine($"Name: {name}");
Console.WriteLine($"描述: {description}");
}
Imports IronXL
' Create sample CSV with complex quoted fields
Dim csvContent As String = "Name,描述,Price,Category" & vbCrLf &
"""Johnson, Mike"",""Premium keyboard with mechanical switches"",149.99,Electronics" & vbCrLf &
"""O'Brien, Sarah"",""Children's toy - ages 3+"",29.99,Toys"
File.WriteAllText("complex_data.csv", csvContent)
Dim workbook As WorkBook = WorkBook.LoadCSV("complex_data.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
For row As Integer = 1 To sheet.RowCount
Dim name As String = sheet($"A{row}").StringValue
Dim description As String = sheet($"B{row}").StringValue
Console.WriteLine($"Name: {name}")
Console.WriteLine($"描述: {description}")
Next row
IronXL 能夠正確地將 "Johnson, Mike" 解釋為單個字段,即使包含逗號,並且能夠正確地處理描述中的嵌套引號。 這種自動處理方式省去了自訂解析器所需的複雜正規表示式或狀態機。
字符編碼問題該如何處理?
使用不同的字符編碼需要仔細考慮。 IronXL 可自動處理各種編碼,確保國際字元正確顯示:
using IronXL;
WorkBook workbook = WorkBook.Load("international_data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
for (int row = 1; row <= sheet.RowCount; row++)
{
string city = sheet[$"A{row}"].StringValue;
string country = sheet[$"B{row}"].StringValue;
// Characters like n~, u-umlaut, e-acute display correctly
Console.WriteLine($"Location: {city}, {country}");
}
// Save with UTF-8 encoding to preserve characters
workbook.SaveAsCsv("output_utf8.csv");
using IronXL;
WorkBook workbook = WorkBook.Load("international_data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
for (int row = 1; row <= sheet.RowCount; row++)
{
string city = sheet[$"A{row}"].StringValue;
string country = sheet[$"B{row}"].StringValue;
// Characters like n~, u-umlaut, e-acute display correctly
Console.WriteLine($"Location: {city}, {country}");
}
// Save with UTF-8 encoding to preserve characters
workbook.SaveAsCsv("output_utf8.csv");
Imports IronXL
Dim workbook As WorkBook = WorkBook.Load("international_data.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
For row As Integer = 1 To sheet.RowCount
Dim city As String = sheet($"A{row}").StringValue
Dim country As String = sheet($"B{row}").StringValue
' Characters like n~, u-umlaut, e-acute display correctly
Console.WriteLine($"Location: {city}, {country}")
Next
' Save with UTF-8 encoding to preserve characters
workbook.SaveAsCsv("output_utf8.csv")
無論使用 UTF-8、UTF-16 或傳統的 ANSI 編碼,IronXL 都能在讀寫週期中保持字元完整性。 儲存 CSV 檔案時,預設使用 UTF-8 編碼,以達到最佳相容性。 請查看匯出指南,以了解所有輸出格式選項。
輸入
! Excel 電子表格顯示國際數據,包含國家、地區、人口、GDP(美元)和貨幣等列,顯示 15 個不同國家及其各自的經濟資訊。
輸出
Visual Studio 偵錯控制台顯示位置數據,包括多種語言的國家/地區名稱和區域,顯示來自歐洲、北美洲、南美洲、非洲和亞洲的國家。
如何使用自訂分隔符號和區域格式?
自訂分隔符號和區域格式需要靈活的配置。 歐洲的 CSV 檔案通常使用分號作為分隔符,逗號作為小數分隔符號:
using IronXL;
// European CSV format (semicolon delimiter, comma decimal)
string europeanCsv = @"Product;Price;Quantity
Widget A;12,50;100
Gadget B;24,99;50";
File.WriteAllText("european.csv", europeanCsv);
WorkBook workbook = WorkBook.LoadCSV("european.csv",
fileFormat: ExcelFileFormat.XLSX,
listDelimiter: ";");
WorkSheet sheet = workbook.DefaultWorkSheet;
for (int row = 1; row <= sheet.RowCount; row++)
{
string product = sheet[$"A{row}"].StringValue;
string priceText = sheet[$"B{row}"].StringValue;
decimal price = decimal.Parse(priceText.Replace(',', '.'));
Console.WriteLine($"{product}: euro{price}");
}
using IronXL;
// European CSV format (semicolon delimiter, comma decimal)
string europeanCsv = @"Product;Price;Quantity
Widget A;12,50;100
Gadget B;24,99;50";
File.WriteAllText("european.csv", europeanCsv);
WorkBook workbook = WorkBook.LoadCSV("european.csv",
fileFormat: ExcelFileFormat.XLSX,
listDelimiter: ";");
WorkSheet sheet = workbook.DefaultWorkSheet;
for (int row = 1; row <= sheet.RowCount; row++)
{
string product = sheet[$"A{row}"].StringValue;
string priceText = sheet[$"B{row}"].StringValue;
decimal price = decimal.Parse(priceText.Replace(',', '.'));
Console.WriteLine($"{product}: euro{price}");
}
Imports IronXL
' European CSV format (semicolon delimiter, comma decimal)
Dim europeanCsv As String = "Product;Price;Quantity" & vbCrLf & "Widget A;12,50;100" & vbCrLf & "Gadget B;24,99;50"
File.WriteAllText("european.csv", europeanCsv)
Dim workbook As WorkBook = WorkBook.LoadCSV("european.csv", fileFormat:=ExcelFileFormat.XLSX, listDelimiter:=";")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
For row As Integer = 1 To sheet.RowCount
Dim product As String = sheet($"A{row}").StringValue
Dim priceText As String = sheet($"B{row}").StringValue
Dim price As Decimal = Decimal.Parse(priceText.Replace(","c, "."c))
Console.WriteLine($"{product}: euro{price}")
Next row
listDelimiter 參數配置欄位拆分,而數字解析將歐洲十進位表示法轉換為 .NET 的預期格式。 這種靈活性使得無需修改來源資料即可處理來自任何地區的 CSV 檔案。 導入資料指南涵蓋了其他資料導入場景。
如何高效處理大型 CSV 檔案?
處理大型 CSV 檔案會帶來獨特的挑戰,需要採用周全的記憶體管理和效能方法。 IronXL 提供了處理包含數百萬行檔案而不會耗盡系統資源的策略。
如何使用批次處理大型資料集?
批次處理將大型資料集分割成易於管理的小塊,防止記憶體過載並實現進度追蹤:
using IronXL;
WorkBook workbook = WorkBook.LoadCSV("large_dataset.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
int batchSize = 1000;
int totalRows = sheet.RowCount;
for (int startRow = 1; startRow <= totalRows; startRow += batchSize)
{
int endRow = Math.Min(startRow + batchSize - 1, totalRows);
var batchResults = new List<(string Id, decimal Amount)>();
for (int row = startRow; row <= endRow; row++)
{
string id = sheet[$"A{row}"].StringValue;
decimal amount = sheet[$"B{row}"].DecimalValue;
batchResults.Add((id, amount));
}
// Save batch results to database or file
Console.WriteLine($"Processed rows {startRow} to {endRow}: {batchResults.Count} records");
}
using IronXL;
WorkBook workbook = WorkBook.LoadCSV("large_dataset.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
int batchSize = 1000;
int totalRows = sheet.RowCount;
for (int startRow = 1; startRow <= totalRows; startRow += batchSize)
{
int endRow = Math.Min(startRow + batchSize - 1, totalRows);
var batchResults = new List<(string Id, decimal Amount)>();
for (int row = startRow; row <= endRow; row++)
{
string id = sheet[$"A{row}"].StringValue;
decimal amount = sheet[$"B{row}"].DecimalValue;
batchResults.Add((id, amount));
}
// Save batch results to database or file
Console.WriteLine($"Processed rows {startRow} to {endRow}: {batchResults.Count} records");
}
Imports IronXL
Dim workbook As WorkBook = WorkBook.LoadCSV("large_dataset.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
Dim batchSize As Integer = 1000
Dim totalRows As Integer = sheet.RowCount
For startRow As Integer = 1 To totalRows Step batchSize
Dim endRow As Integer = Math.Min(startRow + batchSize - 1, totalRows)
Dim batchResults As New List(Of (Id As String, Amount As Decimal))()
For row As Integer = startRow To endRow
Dim id As String = sheet($"A{row}").StringValue
Dim amount As Decimal = sheet($"B{row}").DecimalValue
batchResults.Add((id, amount))
Next
' Save batch results to database or file
Console.WriteLine($"Processed rows {startRow} to {endRow}: {batchResults.Count} records")
Next
一次處理 1000 行數據,可以在批次之間進行垃圾回收,從而保持穩定的記憶體使用率。 這種模式也便於錯誤恢復——您可以從上一個成功的批次恢復,而不是從頭開始。 《 Excel 轉資料集指南》展示如何有效率地處理記憶體中的大量資料。
! Microsoft Excel 電子表格顯示一個大型資料集,其中包含國家/地區、地區、城市、人口、GDP、貨幣、緯度和經度等列,顯示各種國際資料條目。
控制台輸出顯示正在以 1000 筆記錄為一組對 CSV 記錄進行批次處理,並顯示第 1 行到第 10001 行的進度訊息。
如何進行CSV和Excel格式之間的轉換?
IronXL 的一個突出特點是 CSV 和 Excel 格式之間的轉換,從而可以實現利用兩種格式優勢的工作流程。 當需要將 CSV 資料匯入 Excel 進行進階處理,或需要將 Excel 報表匯出為 CSV 檔案進行系統整合時,此功能非常寶貴。
如何將 CSV 檔案轉換為格式化的 Excel 工作簿?
將 CSV 檔案轉換為 Excel 檔案並進行格式設置,可增強資料呈現效果,並啟用公式、圖表和樣式等進階功能:
using IronXL;
WorkBook workbook = WorkBook.LoadCSV("sales_report.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Format header row
for (int col = 0; col < sheet.ColumnCount; col++)
{
var headerCell = sheet.GetCellAt(0, col);
headerCell.Style.Font.Bold = true;
headerCell.Style.BackgroundColor = "#4472C4";
headerCell.Style.Font.Color = "#FFFFFF";
}
// Format currency columns
for (int row = 1; row <= sheet.RowCount; row++)
{
var priceCell = sheet[$"C{row}"];
priceCell.FormatString = "$#,##0.00";
}
// Auto-fit columns for better display
for (int col = 0; col < sheet.ColumnCount; col++)
{
sheet.AutoSizeColumn(col);
}
workbook.SaveAs("formatted_report.xlsx");
Console.WriteLine("CSV converted to formatted Excel file");
using IronXL;
WorkBook workbook = WorkBook.LoadCSV("sales_report.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Format header row
for (int col = 0; col < sheet.ColumnCount; col++)
{
var headerCell = sheet.GetCellAt(0, col);
headerCell.Style.Font.Bold = true;
headerCell.Style.BackgroundColor = "#4472C4";
headerCell.Style.Font.Color = "#FFFFFF";
}
// Format currency columns
for (int row = 1; row <= sheet.RowCount; row++)
{
var priceCell = sheet[$"C{row}"];
priceCell.FormatString = "$#,##0.00";
}
// Auto-fit columns for better display
for (int col = 0; col < sheet.ColumnCount; col++)
{
sheet.AutoSizeColumn(col);
}
workbook.SaveAs("formatted_report.xlsx");
Console.WriteLine("CSV converted to formatted Excel file");
Imports IronXL
Dim workbook As WorkBook = WorkBook.LoadCSV("sales_report.csv")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Format header row
For col As Integer = 0 To sheet.ColumnCount - 1
Dim headerCell = sheet.GetCellAt(0, col)
headerCell.Style.Font.Bold = True
headerCell.Style.BackgroundColor = "#4472C4"
headerCell.Style.Font.Color = "#FFFFFF"
Next
' Format currency columns
For row As Integer = 1 To sheet.RowCount
Dim priceCell = sheet($"C{row}")
priceCell.FormatString = "$#,##0.00"
Next
' Auto-fit columns for better display
For col As Integer = 0 To sheet.ColumnCount - 1
sheet.AutoSizeColumn(col)
Next
workbook.SaveAs("formatted_report.xlsx")
Console.WriteLine("CSV converted to formatted Excel file")
此程式碼對標題套用粗體格式和顏色,從而創建視覺層次結構。 使用千位分隔符號的貨幣格式可以提高數字的可讀性。 AutoSizeColumn 調整列寬以適應內容。 單元格格式設定指南和Excel 文件編寫教學提供了更多格式設定技巧。
輸入
! Excel 電子表格顯示銷售數據,包含銷售 ID、日期、地區、產品、銷售代表、數量、單價、總銷售額和貨幣等列,共 26 行國際銷售數據。
輸出
如何從 CSV 資料建立新的 Excel 檔案?
除了簡單的轉換之外,IronXL 還允許您從 CSV 來源建立包含多個工作表、公式和結構化資料的 Excel 檔案。 合併儲存格指南展示如何建立具有合併標題的專業外觀報告。
對於容器化部署,IronXL 的轉換功能可在 Docker 環境中執行,無需外部相依性或 Office 安裝。 這使其成為雲端原生架構的理想選擇,因為在雲端原生架構中,輕量級、自包含的處理至關重要。
為什麼應該使用 IronXL 進行 CSV 處理?
IronXL 將 CSV 處理從一項複雜的挑戰轉變為可靠的操作,消除了困擾自訂實現的無數極端情況和效能問題。 此函式庫的智慧型解析器可自動處理引號的欄位、特殊字元和各種分隔符,同時提供 CSV 和 Excel 格式之間的轉換。
無論是匯入客戶資料、處理財務記錄或在格式之間進行轉換,IronXL 的 C# CSV 解析器都能處理這些複雜情況,讓您可以專注於業務邏輯,而不是解析基礎架構。
圖書館致力於持續改進,這一點從定期更新中可見一斑。 IronXL 的文件涵蓋了從基本安裝到進階場景的所有內容,為開發人員在 .NET 10 應用程式中成功進行 CSV 和電子表格處理提供了所需的資源。
準備好簡化您的 CSV 處理工作流程了嗎? 首先申請免費試用許可證,以評估全部功能。 準備部署時,請查看適用於各種規模專案的可用授權選項。
| 能力 | 描述 | 常見使用情境 |
|---|---|---|
| 自動分隔符號檢測 | 無需配置即可偵測逗號、製表符、分號和豎線。 | 從第三方系統匯入文件 |
| 引用字段處理 | 正確解析包含分隔符號或換行符的字段 | 資料匯出中的地址和描述字段 |
| 編碼支持 | 讀取 UTF-8、UTF-16 和 ANSI 編碼的文件 | 處理國際資料檔案 |
| CSV 到 Excel 轉換 | 一步完成格式轉換和應用,包括公式和樣式 | 從原始數據產生格式化報告 |
| 大型文件處理 | 針對數百萬行文件的批次處理模式 | ETL管道和資料遷移任務 |
常見問題解答
什麼是CSV文件,為什麼被廣泛使用?
CSV(逗號分隔值)文件是一種資料交換的簡單文本格式,由於其簡單性和與各種應用程式、資料庫和系統的容易集成,因此被廣泛使用。
在C#中解析CSV文件可能會出現哪些挑戰?
在C#中解析CSV文件可能會很複雜,因為需要處理如引號字段包含逗號的問題、資料單元格內的換行符管理,以及超出基本字符串操作的其他細節。
IronXL如何輔助C#中的CSV文件解析?
IronXL提供了一個強大的CSV文件解析解決方案,簡化了複雜任務,並通過其高效的解析功能確保資料處理準確。
IronXL有哪些特性使其適合CSV解析?
IronXL提供了如處理引號字段、管理換行符和提供高效資料處理功能等特性,使其適合解析複雜的CSV文件。
IronXL是否兼容不同的CSV格式?
是的,IronXL被設計為兼容各種CSV格式,允許開發人員在不同系統和應用程式中精簡資料處理任務。
IronXL能否高效處理大型CSV文件?
IronXL經過優化能夠高效處理大型CSV文件,確保快速準確的資料處理而不會影響性能。
IronXL支援CSV解析後的資料處理嗎?
是的,IronXL不僅解析CSV文件,還支援資料操作和轉換,使得開發人員能夠無縫地處理資料。
IronXL如何在CSV解析過程中確保資料準確性?
IronXL採用先進的解析技術來處理複雜的CSV結構,確保在解析過程中資料的準確性和完整性。
IronXL與其他CSV解析庫有何不同?
IronXL以其全面的功能集,效率和易用性而脫穎而出,為開發者提供了一個強大的工具來應對CSV解析挑戰。
我可以在哪裡找到更多有關使用IronXL進行CSV解析的資源?
您可以在Iron Software網站及其文件頁面上找到更多關於使用IronXL進行CSV解析的資源和指南。


