使用 IRONXL 如何使用 C# CSV 解析器精簡數據處理 Jordi Bardia 發表日期:10月 19, 2025 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在雙子座打開 請向 Gemini 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 CSV(逗號分隔值)檔案仍然是應用程式、資料庫和系統之間資料交換最廣泛使用的格式之一。 儘管解析 CSV 檔案看似簡單,但在 C# 中正確解析 CSV 檔案很快就會變成一個複雜的挑戰,即使是經驗豐富的開發人員也可能難以應對。 從處理包含逗號的帶引號的欄位到管理資料單元格中的換行符,CSV 處理的細微差別需要的不僅僅是基本的字串操作。 許多開發者在開始解析 CSV 檔案時,都會採用簡單的 string.Split(',') 方法,但很快就會發現,現實世界中的 CSV 檔案會以無數種方式破壞這些基本實作。 處理具有多列的大型資料集時會出現效能問題,記憶體消耗會失控,極端情況會導致 Excel 電子表格資料損壞,難以偵錯。 這些挑戰導致人們花費無數時間編寫和維護自訂 CSV 解析程式碼,但這些程式碼仍然無法正確處理所有情況。 IronXL提供了一個強大的解決方案,將 CSV 處理從令人沮喪的源泉轉變為精簡、可靠的操作。 作為一個全面的.NET Excel 庫,IronXL 能夠處理 CSV 解析的複雜性,同時提供與 Excel 格式的無縫集成,使其成為處理多種資料格式的應用程式的理想選擇。 無論您是匯入客戶資料、處理財務記錄或管理庫存文件,IronXL 的智慧型 C# CSV 庫解析器都能消除困擾自訂實作的常見陷阱。 使用 C# CSV 解析器簡化資料處理:圖 1 - IronXL C#中CSV解析的複雜之處是什麼? CSV 檔案看似簡單,其實隱藏著處理真實世界資料時會遇到的諸多挑戰。 雖然格式看起來很簡單——值之間用逗號分隔——但實際上卻涉及到處理大量的極端情況和效能問題,這些問題可能會破壞基本的解析方法。 根據Stack Overflow上的討論,即使是經驗豐富的開發人員也難以正確處理 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 IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 對於最簡單的情況,這種方法完全有效,但遇到以下情況時會立即失效: 包含嵌入式逗號的引號字段:真實的 CSV 檔案通常包含地址或描述等字段,這些字段的資料本身包含逗號。 像"Smith, John""Developer""New York, NY""50000"這樣的 CSV 行會被錯誤地拆分成五個字段而不是四個字段,從而破壞資料結構,導致後續處理出現錯位。 欄位內的換行符:根據 RFC 4180(CSV 標準),欄位在正確引用時可以包含換行符。 多行位址欄位打破了逐行讀取的方法,需要複雜的狀態管理來追蹤換行符號是出現在引號的欄位中還是代表新記錄。 轉義字元和引號處理:CSV 檔案使用各種約定來轉義帶引號欄位中的引號。 有些人使用雙引號(""),而有些人則使用反斜線或其他轉義字元。 如果處理不當,諸如"她說,"你好!""之類的問候語資料就會損壞或導致解析錯誤。 不同的分隔符號和編碼:並非所有"CSV"檔案都使用逗號。 製表符分隔值 (TSV)、管道符分隔檔案和分號分隔值是常見的變體。 此外,文件可能使用不同的字元編碼(UTF-8、UTF-16、ANSI),需要進行適當的檢測和轉換,以避免資料損壞,尤其是國際字元。 RFC 4180 標準定義了 CSV 格式規範,但許多實作方式都與該規範有所不同。 大型檔案的記憶體管理:使用 File.ReadAllLines() 將 500MB 的 CSV 檔案完全載入到記憶體中可能會導致嚴重的效能下降或記憶體不足異常。 使用 C# CSV 解析器處理數百萬行資料需要流式處理方法和高效的記憶體管理,以保持應用程式的回應能力。 當處理來自不同來源的 CSV 檔案時,這些複雜性會加劇,因為每個來源都可能使用不同的引用、轉義和分隔符號約定。 建立一個能夠可靠處理所有這些場景的解析器需要大量的開發工作,並且隨著新的極端情況的出現,還需要持續的維護。 IronXL 如何改變 CSV 處理方式? IronXL 透過提供經過實戰檢驗的解析器,徹底革新了 CSV 處理方式,該解析器能夠處理現實世界 CSV 檔案的複雜性,同時保持極高的易用性。 IronXL 不強迫開發者重複造輪子,而是提供了一個全面的解決方案,透過直覺的 API 解決所有常見的 CSV 問題。 立即下載 IronXL,體驗 CSV 解析工作流程的顯著變化。 該函式庫的 CSV 功能遠不止基本的解析。 IronXL 將 CSV 檔案視為更廣泛的資料格式生態系統中的一等公民,從而能夠在 CSV、Excel 和其他格式之間實現無縫轉換,而不會遺失資料。 對於需要匯入 CSV 資料、處理資料並以不同格式匯出給不同利害關係人的應用程式來說,這種整合非常有價值。 最新更新和穩定性改進:IronXL 透過定期更新和社群回饋不斷發展。 在最近的版本中,幾項關鍵改進和錯誤修復更新提高了 CSV 解析準確性、檔案編碼檢測和記憶體效率。 這些更新確保開發人員即使在處理大型或不規則資料集時也能獲得一致的結果,從而消除了早期自訂 CSV 實作中發現的許多陷阱。 智慧解析引擎:IronXL 的解析器會自動偵測並處理資料中的引號欄位、嵌入式分隔符號和換行符。 該引擎無需手動配置即可適應不同的 CSV 方言,無論文件遵循嚴格的 RFC 4180 標準還是使用常見變體,都能正確解釋文件。 靈活的分隔符號支援:雖然逗號仍然是預設分隔符,但 IronXL 可以透過簡單的配置選項輕鬆處理任何分隔符。 無論是處理製表符分隔的文件、管道符分隔的匯出文件,還是分號分隔的歐洲格式,同一個簡潔的 API 都能一致地處理所有變體。 請參閱我們的CSV 讀取教學課程以取得詳細範例。 Excel 整合卓越性:與獨立的 CSV 解析器不同,IronXL 提供 CSV 和 Excel 格式之間的無縫雙向轉換。 此功能支援將 CSV 資料匯入 Excel 工作簿以進行高級格式設定、公式應用和圖表生成等工作流程——所有這些都可以透過 C# 程式碼以程式設計方式完成。 跨平台可靠性:IronXL 可在 Windows、Linux 和 macOS 環境下穩定運行,使其成為現代雲端原生應用程式的理想選擇。 該程式庫支援在 Docker 和 Kubernetes 中進行容器化部署,確保 CSV 處理邏輯無論是在開發人員的機器上運行,還是在 Azure 或 AWS 上的生產容器中運行,都能以相同的方式運作。 記憶體高效架構:本庫採用最佳化的記憶體管理技術,能夠在不消耗過多記憶體的情況下處理大型 CSV 檔案。 IronXL 透過高效的串流和緩衝策略處理數 GB 的文件,即使處理數百萬行資料也能保持響應速度。 使用 C# CSV 解析器簡化資料處理:圖 2 - 跨平台 IronXL入門指南 開始使用 IronXL 只需幾個簡單的步驟。 該程式庫可透過微軟的套件管理系統 NuGet 無縫整合到任何 .NET 專案中。 有關詳細的安裝說明,請造訪我們的安裝指南。 首先,透過 NuGet 套件管理器控制台安裝 IronXL: Install-Package IronXL.Excel 使用 C# CSV 解析器簡化資料處理:圖 3 - 安裝 或者,對於現代 .NET 項目,可以使用 .NET CLI: dotnet add package IronXL.Excel dotnet add package IronXL.Excel SHELL 安裝完成後,將 IronXL 命名空間新增至您的 C# 檔案: using IronXL; using IronXL; Imports IronXL $vbLabelText $csharpLabel 讓我們從一個簡單的例子開始,示範如何載入和讀取 CSV 檔案: // Load a CSV file var reader = WorkBook.LoadCSV("customers.csv"); // Access the default worksheet (CSV files have one sheet) WorkSheet sheet = reader.DefaultWorkSheet; // Read a specific cell value string customerName = sheet["B2"].StringValue; // Display the value Console.WriteLine($"Customer: {customerName}"); // Load a CSV file var reader = WorkBook.LoadCSV("customers.csv"); // Access the default worksheet (CSV files have one sheet) WorkSheet sheet = reader.DefaultWorkSheet; // Read a specific cell value string customerName = sheet["B2"].StringValue; // Display the value Console.WriteLine($"Customer: {customerName}"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 這段程式碼示範了幾個關鍵概念。首先,WorkBook.LoadCSV() 方法能夠智慧地解析 CSV 文件,自動偵測分隔符號並處理任何帶有引號的欄位或特殊字元。 此方法傳回一個 WorkBook 對象,這是 IronXL 用於儲存電子表格資料的主要容器。 由於 CSV 檔案只包含一個資料表,我們透過 DefaultWorkSheet 屬性存取它。 最後,我們使用 Excel 風格的儲存格參考(例如"B2")來存取特定值,IronXL 提供了類型安全的存取器(例如 StringValue)來檢索資料。 輸入 如何使用 C# CSV 解析器簡化資料處理:圖 4 - 範例輸入 輸出 如何使用 C# CSV 解析器簡化資料處理:圖 5 - 控制台輸出 如何使用 IronXL 讀取 CSV 檔案? 使用 IronXL 讀取 CSV 檔案提供了多種針對不同場景量身定制的方法,從簡單的資料提取到複雜的處理工作流程。 此函式庫的靈活 API 可適應各種讀取模式,同時在所有檔案類型上保持一致的行為。 使用 C# CSV 解析器簡化資料處理:圖 6 - 功能 最直接的方法是使用預設設定的 LoadCSV 方法: // Load CSV with automatic delimiter detection WorkBook workbook = WorkBook.LoadCSV("sales_data.csv"); WorkSheet sheet = workbook.DefaultWorkSheet; // Iterate through rows for (var row = 1; row <= sheet.RowCount; row++) { // Read cells in the current 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}"); } // Load CSV with automatic delimiter detection WorkBook workbook = WorkBook.LoadCSV("sales_data.csv"); WorkSheet sheet = workbook.DefaultWorkSheet; // Iterate through rows for (var row = 1; row <= sheet.RowCount; row++) { // Read cells in the current 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}"); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 此範例展示了逐行遍歷 CSV 資料的過程。 程式碼從第 1 行開始(假設第 0 行是標題行),並依序處理每一行。 IronXL 的類型化存取器(StringValue、DecimalValue、IntValue)會自動將文字資料轉換為適當的 .NET 類型,從而消除手動解析並減少容易出錯的轉換程式碼。 循環繼續遍歷所有行,使用 RowCount 屬性,該屬性準確反映了檔案中的資料行總數。 對於使用非標準分隔符號的 CSV 文件,IronXL 提供了配置選項: // Load a tab-separated file WorkBook workbook = WorkBook.LoadCSV("inventory.tsv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "\t"); WorkSheet sheet = workbook.DefaultWorkSheet; // Process header row var headers = new List<string>(); for (int col = 0; col < sheet.ColumnCount; col++) { headers.Add(sheet.GetCellAt(0, col).StringValue); } // Display headers Console.WriteLine("Columns: " + string.Join(" | ", headers)); // Load a tab-separated file WorkBook workbook = WorkBook.LoadCSV("inventory.tsv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "\t"); WorkSheet sheet = workbook.DefaultWorkSheet; // Process header row var headers = new List<string>(); for (int col = 0; col < sheet.ColumnCount; col++) { headers.Add(sheet.GetCellAt(0, col).StringValue); } // Display headers Console.WriteLine("Columns: " + string.Join(" | ", headers)); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel LoadCSV 方法接受可選參數以自訂解析行為。 listDelimiter 參數指定分隔欄位的字元-在本例中,TSV 檔案使用製表符分隔。 fileFormat 參數決定解析後的內部表示形式,其中 XLSX 提供的功能最多、相容性最強。 此範例還演示了列迭代,使用數字索引存取單元格,並從第一行建立標題列表。 輸入 如何使用 C# CSV 解析器簡化資料處理:圖 7 - TSV 輸入範例 輸出 如何使用 C# CSV 解析器簡化資料處理:圖 8 - 標題輸出 處理 CSV 資料通常需要基於範圍的操作。 如需了解更多進階Excel操作,請參閱我們的Excel區域教學: var csv = WorkBook.LoadCSV("employees.csv"); WorkSheet sheet = csv.DefaultWorkSheet; // Read a range of cells var range = sheet["A2:D10"]; // Process all cells in the range foreach (var cell in range) { if (!cell.IsEmpty) { Console.WriteLine($"Cell {cell.AddressString}: {cell.Text}"); } } // Calculate sum of a numeric column decimal totalSalary = sheet["E2:E100"].Sum(); Console.WriteLine($"Total Salary: ${totalSalary:N2}"); var csv = WorkBook.LoadCSV("employees.csv"); WorkSheet sheet = csv.DefaultWorkSheet; // Read a range of cells var range = sheet["A2:D10"]; // Process all cells in the range foreach (var cell in range) { if (!cell.IsEmpty) { Console.WriteLine($"Cell {cell.AddressString}: {cell.Text}"); } } // Calculate sum of a numeric column decimal totalSalary = sheet["E2:E100"].Sum(); Console.WriteLine($"Total Salary: ${totalSalary:N2}"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 靶場作業提供強大的資料處理能力。 範圍選擇器語法("A2:D10")與 Excel 的約定一致,因此對於熟悉電子表格的開發人員來說非常直觀。 foreach 迴圈遍歷範圍內的所有儲存格,IsEmpty 屬性有助於高效率地跳過空白儲存格。 IronXL 透過 Sum()、Average() 和 Max() 等聚合函數擴展了這些範圍,從而無需手動迭代即可進行計算。 這些操作可以無縫地處理 CSV 數據,將其視為與 Excel 工作表完全相同的數據。 請查看我們的API 參考文檔,以了解所有可用方法。 處理帶有標題的 CSV 檔案需要特別注意: WorkBook workbook = WorkBook.LoadCSV("products_with_headers.csv"); WorkSheet sheet = workbook.DefaultWorkSheet; // Skip header row and process var data for (int row = 1; row <= sheet.RowCount; row++) { var rowData = sheet.GetRow(row); // Access cells by index based on known column positions string sku = rowData.Columns[0].StringValue; // Column A string description = rowData.Columns[1].StringValue; // Column B decimal cost = rowData.Columns[2].DecimalValue; // Column C // Process the data ProcessProduct(sku, description, cost); } void ProcessProduct(string sku, string description, decimal cost) { // Business logic here Console.WriteLine($"Processing: {sku} - {description} (${cost})"); } WorkBook workbook = WorkBook.LoadCSV("products_with_headers.csv"); WorkSheet sheet = workbook.DefaultWorkSheet; // Skip header row and process var data for (int row = 1; row <= sheet.RowCount; row++) { var rowData = sheet.GetRow(row); // Access cells by index based on known column positions string sku = rowData.Columns[0].StringValue; // Column A string description = rowData.Columns[1].StringValue; // Column B decimal cost = rowData.Columns[2].DecimalValue; // Column C // Process the data ProcessProduct(sku, description, cost); } void ProcessProduct(string sku, string description, decimal cost) { // Business logic here Console.WriteLine($"Processing: {sku} - {description} (${cost})"); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 輸入 如何使用 C# CSV 解析器簡化資料處理:圖 9 - 帶標題的範例文件 輸出 如何使用 C# CSV 解析器簡化資料處理:圖 10 - 控制台輸出 如何處理複雜的 CSV 場景? 現實世界中的 CSV 檔案通常包含複雜的結構,簡單的解析方法很難奏效。 IronXL 能夠優雅地處理這些具有挑戰性的場景,為引號的欄位、特殊字元、編碼問題和非標準格式提供強大的解決方案。 讓我們來探討如何處理包含分隔符號的引號欄位的 CSV 檔案: // CSV with complex quoted fields string csvContent = @"Name,Description,Price,Category ""Johnson, Mike"",""Premium keyboard with ""mechanical"" switches"",149.99,Electronics ""O'Brien, Sarah"",""Children's toy - ages 3+"",29.99,Toys"; // Save content to file for demonstration File.WriteAllText("complex_data.csv", csvContent); // Load and process the CSV WorkBook workbook = WorkBook.LoadCSV("complex_data.csv"); WorkSheet sheet = workbook.DefaultWorkSheet; // Read the complex fields 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: {description}"); Console.WriteLine("---"); } // CSV with complex quoted fields string csvContent = @"Name,Description,Price,Category ""Johnson, Mike"",""Premium keyboard with ""mechanical"" switches"",149.99,Electronics ""O'Brien, Sarah"",""Children's toy - ages 3+"",29.99,Toys"; // Save content to file for demonstration File.WriteAllText("complex_data.csv", csvContent); // Load and process the CSV WorkBook workbook = WorkBook.LoadCSV("complex_data.csv"); WorkSheet sheet = workbook.DefaultWorkSheet; // Read the complex fields 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: {description}"); Console.WriteLine("---"); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel IronXL 會自動處理引號欄位的複雜度。 儘管"Johnson, Mike"中包含逗號,但解析器仍能將其正確解釋為單個字段,並能正確處理描述中"mechanical"的嵌套引號。 本函式庫遵循 CSV 標準進行引用處理,將雙引號 ("") 視為字面引號字元的轉義序列。 這種自動處理方式省去了在程式碼中使用複雜正規表示式或狀態機的需要。 使用不同的字符編碼需要仔細考慮: // Load CSV with specific encoding WorkBook workbook = WorkBook.Load("international_data.csv"); WorkSheet sheet = workbook.DefaultWorkSheet; // Process international characters for (int row = 1; row <= sheet.RowCount; row++) { string city = sheet[$"A{row}"].StringValue; string country = sheet[$"B{row}"].StringValue; // Characters like ñ, ü, é display correctly Console.WriteLine($"Location: {city}, {country}"); } // Save with UTF-8 encoding to preserve characters workbook.SaveAsCsv("output_utf8.csv"); // Load CSV with specific encoding WorkBook workbook = WorkBook.Load("international_data.csv"); WorkSheet sheet = workbook.DefaultWorkSheet; // Process international characters for (int row = 1; row <= sheet.RowCount; row++) { string city = sheet[$"A{row}"].StringValue; string country = sheet[$"B{row}"].StringValue; // Characters like ñ, ü, é display correctly Console.WriteLine($"Location: {city}, {country}"); } // Save with UTF-8 encoding to preserve characters workbook.SaveAsCsv("output_utf8.csv"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel IronXL 能夠聰明地偵測和處理各種字元編碼,確保國際字元正確顯示。 無論使用 UTF-8、UTF-16 或傳統的 ANSI 編碼,此函式庫都能在整個讀寫週期中保持字元完整性。 IronXL 在儲存 CSV 檔案時預設使用 UTF-8 編碼,以確保與現代系統的最大相容性,同時保留特殊字元。 輸入 如何使用 C# CSV 解析器簡化資料處理:圖 11 - 字元編碼的範例輸入 輸出 如何使用 C# CSV 解析器簡化資料處理:圖 12 - 控制台輸出 如何使用 C# CSV 解析器簡化資料處理:圖 13 - UTF-8 編碼輸出 自訂分隔符號和格式需要靈活的配置: // 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); // Load with semicolon delimiter WorkBook workbook = WorkBook.LoadCSV("european.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ";"); WorkSheet sheet = workbook.DefaultWorkSheet; // Parse European number format for (int row = 1; row <= sheet.RowCount; row++) { string product = sheet[$"A{row}"].StringValue; string priceText = sheet[$"B{row}"].StringValue; // Convert European format to decimal decimal price = decimal.Parse(priceText.Replace(',', '.')); Console.WriteLine($"{product}: €{price}"); } // 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); // Load with semicolon delimiter WorkBook workbook = WorkBook.LoadCSV("european.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ";"); WorkSheet sheet = workbook.DefaultWorkSheet; // Parse European number format for (int row = 1; row <= sheet.RowCount; row++) { string product = sheet[$"A{row}"].StringValue; string priceText = sheet[$"B{row}"].StringValue; // Convert European format to decimal decimal price = decimal.Parse(priceText.Replace(',', '.')); Console.WriteLine($"{product}: €{price}"); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 本範例採用歐洲 CSV 規範,其中分號分隔字段,逗號表示小數點。 listDelimiter 參數配置 IronXL 使用分號而不是逗號來分割欄位。 對於數字解析,程式碼將歐洲十進位表示法轉換為 .NET 期望的格式。 這種靈活性使得無需修改來源資料即可處理來自任何地區或系統的 CSV 檔案。 如何高效處理大型 CSV 檔案? 處理大型 CSV 檔案會帶來獨特的挑戰,需要採用周全的記憶體管理和效能最佳化方法。 IronXL 提供了多種策略來處理包含數百萬行的文件,而不會使系統資源不堪重負。 對於處理大量資料集的企業應用程序,請考慮購買商業許可證以解鎖全部效能功能。 對於可以放入記憶體但包含大量行的文件,批次處理可以提高效率: WorkBook workbook = WorkBook.LoadCSV("large_dataset.csv"); WorkSheet sheet = workbook.DefaultWorkSheet; // Process in batches of 1000 rows int batchSize = 1000; int totalRows = sheet.RowCount; for (int startRow = 1; startRow <= totalRows; startRow += batchSize) { int endRow = Math.Min(startRow + batchSize - 1, totalRows); // Process current batch var batchResults = new List<ProcessedRecord>(); for (int row = startRow; row <= endRow; row++) { string id = sheet[$"A{row}"].StringValue; decimal amount = sheet[$"B{row}"].DecimalValue; // Process and store results batchResults.Add(new ProcessedRecord { Id = id, Amount = amount, Processed = DateTime.Now }); } // Save batch results (to database, file, etc.) SaveBatch(batchResults); Console.WriteLine($"Processed rows {startRow} to {endRow}"); } void SaveBatch(List<ProcessedRecord> records) { // Implement batch saving logic Console.WriteLine($"Saved {records.Count} records"); } class ProcessedRecord { public string Id { get; set; } public decimal Amount { get; set; } public DateTime Processed { get; set; } } WorkBook workbook = WorkBook.LoadCSV("large_dataset.csv"); WorkSheet sheet = workbook.DefaultWorkSheet; // Process in batches of 1000 rows int batchSize = 1000; int totalRows = sheet.RowCount; for (int startRow = 1; startRow <= totalRows; startRow += batchSize) { int endRow = Math.Min(startRow + batchSize - 1, totalRows); // Process current batch var batchResults = new List<ProcessedRecord>(); for (int row = startRow; row <= endRow; row++) { string id = sheet[$"A{row}"].StringValue; decimal amount = sheet[$"B{row}"].DecimalValue; // Process and store results batchResults.Add(new ProcessedRecord { Id = id, Amount = amount, Processed = DateTime.Now }); } // Save batch results (to database, file, etc.) SaveBatch(batchResults); Console.WriteLine($"Processed rows {startRow} to {endRow}"); } void SaveBatch(List<ProcessedRecord> records) { // Implement batch saving logic Console.WriteLine($"Saved {records.Count} records"); } class ProcessedRecord { public string Id { get; set; } public decimal Amount { get; set; } public DateTime Processed { get; set; } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 批次處理將大型資料集分成可管理的小塊,防止記憶體過載並實現進度追蹤。 程式碼一次處理 1000 行數據,並將結果累積到一個臨時清單中,然後再儲存。 這種方法允許在批次之間進行垃圾回收,即使處理大型檔案也能保持穩定的記憶體使用率。 這種模式也便於錯誤恢復——如果處理失敗,您可以從最後一個成功的批次恢復,而不是完全重新開始。 輸入 如何使用 C# CSV 解析器簡化資料處理:圖 14 - 包含 10000 行的範例輸入 輸出 如何使用 C# CSV 解析器簡化資料處理:圖 15 - 批次處理輸出 對於不應將整個文件載入到記憶體中的串流場景: // Alternative approach using row-by-row processing public static void ProcessLargeCsvEfficiently(string filePath) { WorkBook workbook = WorkBook.LoadCSV(filePath); WorkSheet sheet = workbook.DefaultWorkSheet; // Use LINQ for memory-efficient processing var results = Enumerable.Range(1, sheet.RowCount) .Select(row => new { Row = row, Value = sheet[$"A{row}"].DecimalValue }) .Where(item => item.Value > 100) // Filter criteria .Take(10000); // Limit results // Process results as they're enumerated foreach (var item in results) { Console.WriteLine($"Row {item.Row}: {item.Value}"); } } // Alternative approach using row-by-row processing public static void ProcessLargeCsvEfficiently(string filePath) { WorkBook workbook = WorkBook.LoadCSV(filePath); WorkSheet sheet = workbook.DefaultWorkSheet; // Use LINQ for memory-efficient processing var results = Enumerable.Range(1, sheet.RowCount) .Select(row => new { Row = row, Value = sheet[$"A{row}"].DecimalValue }) .Where(item => item.Value > 100) // Filter criteria .Take(10000); // Limit results // Process results as they're enumerated foreach (var item in results) { Console.WriteLine($"Row {item.Row}: {item.Value}"); } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 這種基於 LINQ 的方法利用延遲執行按需處理行,而不是立即載入所有資料。 該查詢建立了一個延遲執行的處理管道,僅在 foreach 循環請求時才讀取和篩選行。 Take 方法提供了一個上限,防止失控的查詢消耗過多資源。 這種模式特別適用於需要在大型文件中尋找特定記錄而無需處理所有內容的場景。 CSV 與 Excel 格式之間的轉換 IronXL 的一個突出特點是 CSV 和 Excel 格式之間的無縫轉換,從而能夠利用兩種格式的優勢進行工作流程。 當需要將 CSV 資料匯入 Excel 進行進階處理,或需要將 Excel 報表匯出為 CSV 檔案進行系統整合時,此功能非常寶貴。 請在我們的文件中了解更多關於文件格式轉換的資訊。 將 CSV 檔案轉換為 Excel 檔案並保留格式: // Load CSV file WorkBook workbook = WorkBook.LoadCSV("sales_report.csv"); WorkSheet sheet = workbook.DefaultWorkSheet; // Apply formatting to enhance readability // 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"; var quantityCell = sheet[$"D{row}"]; quantityCell.Style.HorizontalAlignment = HorizontalAlignment.Right; } // Auto-fit columns for better display for (int col = 0; col < sheet.ColumnCount; col++) { sheet.AutoSizeColumn(col); } // Save as Excel file with formatting preserved workbook.SaveAs("formatted_report.xlsx"); Console.WriteLine("CSV converted to formatted Excel file"); // Load CSV file WorkBook workbook = WorkBook.LoadCSV("sales_report.csv"); WorkSheet sheet = workbook.DefaultWorkSheet; // Apply formatting to enhance readability // 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"; var quantityCell = sheet[$"D{row}"]; quantityCell.Style.HorizontalAlignment = HorizontalAlignment.Right; } // Auto-fit columns for better display for (int col = 0; col < sheet.ColumnCount; col++) { sheet.AutoSizeColumn(col); } // Save as Excel file with formatting preserved workbook.SaveAs("formatted_report.xlsx"); Console.WriteLine("CSV converted to formatted Excel file"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 此轉換過程使用我們高效的 C# CSV 解析器將普通的 CSV 資料轉換為專業格式的 Excel 工作簿。 此程式碼為標題套用粗體格式和背景顏色,從而創建視覺層次結構。 使用千位分隔符號和小數位進行貨幣格式化可以提高數字的可讀性。 AutoSizeColumn 方法會自動調整列寬以適應內容,無需手動調整大小。 產生的 Excel 檔案在 Excel 或其他電子表格應用程式中開啟時,所有格式均保持不變,從而呈現出完美的資料展示效果。 如需更多 Excel 格式設定選項,請參閱我們的儲存格格式設定指南。 輸入 如何使用 C# CSV 解析器簡化資料處理:圖 16 - CSV 輸入範例 輸出 如何使用 C# CSV 解析器簡化資料處理:圖 17 - 控制台輸出 如何使用 C# CSV 解析器簡化資料處理:圖 18 - 格式化的 Excel 輸出 結論 IronXL 將 CSV 處理從一項複雜的挑戰轉變為精簡的操作,消除了困擾自訂實現的無數極端情況和效能問題。 此函式庫的智慧型解析器可自動處理引號的欄位、特殊字元和各種分隔符,同時提供 CSV 和 Excel 格式之間的無縫轉換。 無論您是匯入客戶資料、處理財務記錄或進行格式轉換,IronXL 強大的 C# CSV 解析器都能處理這些複雜情況,讓您可以專注於業務邏輯。 準備好簡化您的 CSV 處理工作流程了嗎? 立即開始免費試用IronXL,它專為各種規模的團隊而設計。 如何使用 C# CSV 解析器簡化資料處理:圖 19 - 許可 常見問題解答 什麼是 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 解析的資源和指南。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 發表日期 12月 19, 2025 如何使用 C# Interop 與 IronXL 在 Excel 中建立資料透視表 在無需 Office 依賴的情況下在 C# 中構建 Excel 樞紐分析表。IronXL 對無需 Excel Interop 的樞紐型報告創建提供了強大的數據操作功能。 閱讀更多 發表日期 12月 18, 2025 使用 IronXL 將 C# DataGridView 匯出到 Excel,並帶有列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多 發表日期 12月 18, 2025 如何在 C# 中使用 IronXL 創建 Excel 生成報告 使用 IronXL 在 C# 中創建 Excel 報告生成。學習構建擁有格式化公式和數據庫集成的專業報告。 閱讀更多 如何在 C# 中使用 IronXL 創建 Excel 生成報告如何在 C# 中創建 Excel 文件...
發表日期 12月 19, 2025 如何使用 C# Interop 與 IronXL 在 Excel 中建立資料透視表 在無需 Office 依賴的情況下在 C# 中構建 Excel 樞紐分析表。IronXL 對無需 Excel Interop 的樞紐型報告創建提供了強大的數據操作功能。 閱讀更多
發表日期 12月 18, 2025 使用 IronXL 將 C# DataGridView 匯出到 Excel,並帶有列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多
發表日期 12月 18, 2025 如何在 C# 中使用 IronXL 創建 Excel 生成報告 使用 IronXL 在 C# 中創建 Excel 報告生成。學習構建擁有格式化公式和數據庫集成的專業報告。 閱讀更多