跳至頁尾內容
USING IRONXL

using C# CSV 解析器簡化資料處理(指南)

CSV (逗號分隔值) 檔案仍然是應用程式、資料庫和系統之間最廣泛使用的資料交換格式之一。 儘管其看似簡單,在C#中正確解析CSV檔案很快就會成為一個具有挑戰性的問題。 從處理含有逗號的引用字段到管理資料格內的換行,CSV處理的細微差別要求超出基本字串操作的東西。

許多開發人員從一個簡單的string.Split(',')方法開始,卻發現現實世界中的CSV檔案以無數種方式打破了這些基本實現。 當處理具有多個欄的大型資料集時,性能問題會出現,記憶體消耗增加,邊緣案例會造成難以除錯的資料損壞。 這些挑戰導致許多人花費無數小時編寫和維護自定義的CSV解析程式碼,但仍不能正確處理每一種情況。

IronXL提供了一個將CSV處理從挫折源轉變為可靠操作的解決方案。 作為.NET的完整Excel程式庫,IronXL處理CSV解析的複雜性,同時提供與Excel格式的整合,使其成為需要處理多種資料格式的應用程式的理想選擇。 無論是匯入客戶資料、處理財務記錄還是管理庫存檔案,IronXL的C# CSV庫解析器消除了糾纏著自定義實現的常見陷阱。

IronXL主頁展示無需Microsoft Office互操作依賴項的Excel檔案讀取C#程式碼範例

在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
$vbLabelText   $csharpLabel

這對簡單的情況完美運行,但在遇到現實資料時立即失敗。 包含嵌入逗號的引用字段是一個主要問題:一條CSV行如"Smith, John",Developer,"New York, NY",50000被拆成五個字段而不是四個,從而破壞資料結構並引起後續處理的對齊錯誤。

字段內的換行也會引起問題。 根據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# 中程式化地實現。

跨平台支持示意圖,顯示與 C#、F# 和 VB.NET 在 .NET 版本 9、8、7、6、Core、Standard 和 Framework 之間的相容性,並使用圖標表示各種平台和部署環境。

您如何安裝 IronXL 進行 CSV 解析?

安裝 IronXL 僅需幾個簡單步驟。 該庫通過 NuGet 整合到任何 .NET 專案中,這是 Microsoft 的套件管理系統。 您可以存取IronXL NuGet 安裝指南以獲得詳細的設置說明。

安裝步驟是什麼?

通過 NuGet Package Manager Console 或 .NET CLI 安裝IronXL:

Install-Package IronXL.Excel

對於授權設置,您可以獲取一個試用授權以在購買之前充分評估IronXL。

您如何載入您的第一個 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}")
$vbLabelText   $csharpLabel

WorkBook.LoadCSV() 方法智能地解析 CSV 文件,自動檢測分隔符並處理引用字段。 由於 CSV 文件包含單個工作表,可以通過 DefaultWorkSheet 存取資料。 型別資源 StringValue 提供了型別安全的值檢索。

輸入

 Excel 試算表顯示客戶資料庫,包含CustomerID、FirstName、LastName、Email、City和Country欄,其中包含10行樣本客戶資料。

輸出

Visual Studio偵錯主控台顯示文字為'Customer: Emily'的輸出

您如何使用 IronXL 讀取 CSV 文件?

using IronXL 讀取 CSV 文件為不同的方案提供多種方法,從簡單資料提取到複雜的處理工作流程。 IronXL功能頁面提供所有功能的完整概覽,而打開工作簿指南則深入介紹了工作簿處理。

 C# 試算表操作庫的功能總覽,顯示六個主要類別:建立、保存和導出、編輯工作簿、處理資料、安全您的工作簿和處理單元格。

您如何通過 CSV 行進行迭代?

最直接的方法使用 LoadCSV 並使用預設設置遍歷所有行:

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
$vbLabelText   $csharpLabel

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))
$vbLabelText   $csharpLabel

listDelimiter 參數指定字段分隔符——此處是TSV文件的制表符。 fileFormat 參數確定解析後的內部表示。 您可以了解更多關於讀取Excel文件以獲取額外的文件格式選項。

 在文字編輯器中顯示為'tsva'的制表符分隔值TSV文件,顯示產品庫存表,具有ItemID、ItemName、Category、Quantity、UnitPrice 和 Supplier列。

 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
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

無論是使用 UTF-8、UTF-16 還是舊版 ANSI 編碼,IronXL 保證字元完整性在讀寫週期內得到保持。 保存 CSV 文件時,預設使用 UTF-8 以獲得最大相容性。 查看匯出指南以獲取所有輸出格式選項。

輸入

 Excel 試算表顯示國際資料,具有 Country、Region、Population、GDP USD 和 Currency 列,顯示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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

每次處理 1000 行允許在批量處理之間進行垃圾收集,保持穩定的記憶體使用。 該模式還促進錯誤恢復——您可以從最後一個成功的批次而不是從頭開始進行恢復。 Excel 到 DataSet 指南展示了如何在記憶體中高效地處理批量資料。

Microsoft Excel 表格顯示一個大型的資料集,包含 Country、Region、City、Population、GDP、Currency、Latitude 和 Longitude 列,顯示各種國際資料條目。

主控台輸出顯示批量處理CSV記錄以1000個為一組,並顯示行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")
$vbLabelText   $csharpLabel

程式碼對標題應用粗體格式和顏色,建立視覺層次結構。 用千位分隔符格式化貨幣,改善數字可讀性。 AutoSizeColumn 調整列寬以適應內容。 單元格式指南寫入Excel檔案教程提供其他格式化技術。

輸入

 Excel 工作表顯示銷售資料,包含Sale ID、Date、Region、Product、Sales Representative、Quantity、Unit Price、Total Sale 和 Currency欄,其中包含26行國際銷售資料。

輸出

Visual Studio偵錯主控台顯示'CSV轉換為格式化的Excel文件'的消息,成功轉換後。

格式化的Excel輸出顯示CSV解析器處理的銷售資料,其中的列適當地格式化,包括混合貨幣。

您如何從 CSV 資料建立新的 Excel 文件?

除了簡單的轉換外,IronXL 允許您使用多個工作表、公式和從 CSV 資源來的結構化資料建立 Excel 檔案合併單元格指南顯示了如何建立具有合併標頭的專業報告。

對於容器部署,IronXL 的轉換功能在 Docker 環境中運行,無需外部依賴項或 Office 安裝。 這使它成為雲原生架構的理想之選,其中輕量級、獨立處理是必不可少的。

為什麼您應該使用 IronXL 進行 CSV 處理?

IronXL 將 CSV 處理從一個複雜的挑戰轉變為可靠的運作,消除了無數邊緣案例和使自定義實現問題的性能問題。 該庫的智能解析器自動處理引用字段、特別字元和不同分隔符,同時提供 CSV 和 Excel 格式之間的轉換。

無論是匯入客戶資料、處理財務記錄,還是進行格式轉換,IronXL 的C# CSV解析器都能處理複雜性,而您則可將注意力集中在商業邏輯上,而不是解析基礎設施上。

該庫對持續改進的承諾通過定期更新顯而易見。 從基本安裝到高階情境,IronXL 文件提供了開發人員在 .NET 10 應用程式中成功處理 CSV 和試算表所需的資源。

準備好簡化您的 CSV 處理工作流程了嗎? 從免費的試用授權開始來充分評估功能集。 當您準備好部署時,查看為所有規模專案設計的授權選項

IronXL CSV Parser——一覽無遺的關鍵功能
功能 描述 常見用例
自動分隔符偵測 無需配置即可檢測逗號、製表符、分號和管道符號 從第三方系統匯入文件
引用字段處理 正確解析包含分隔符或換行的字段 資料匯出中的地址和描述字段
編碼支持 讀取 UTF-8、UTF-16 和 ANSI 編碼的文件 處理國際資料文件
CSV到Excel轉換 轉換並在一個步驟中應用格式、公式和樣式 從原始資料生成格式化報告
大型文件處理 多百萬行文件的批量處理模式 ETL管道和資料遷移任務

IronXL licensing page showing four pricing tiers (Lite $999, Plus $999, Professional $1,999, and Unlimited $3,999) with a toggle between IronXL and Iron Suite options

常見問題

什麼是CSV文件?為什麼它被廣泛使用?

CSV(逗號分隔值)文件是一種簡單的資料交換文字格式,由於其簡單性以及易於與各種應用程式、資料庫和系統整合而被廣泛使用。

在C#中解析CSV文件時可能會出現哪些問題?

在C#中解析CSV文件可能會很複雜,因為需要處理包含逗號的引用字段、管理資料單元內的換行符及其他超出基本字串操作的細微差別。

IronXL如何協助在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解析的資源?

您可以在Iron Software的網站和其文件頁面上找到有關使用IronXL進行CSV解析的更多資源和指南。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話