讀取 CSV .NET:使用 IronXL 的最簡 C# 方法
閱讀 CSV .NET:使用 IronXL 的最簡單 C# 方法。
有了正確的函式庫,在 .NET 應用程式中讀取和寫入 CSV 檔案就變得非常簡單。 開發人員不需要撰寫自訂解析邏輯來處理分隔符、引號欄位和各種資料類型,只需呼叫單一方法即可載入 CSV 資料,並立即以表格格式存取結構化試算表資料。
IronXL透過將以逗號分隔的檔案視為 Excel 工作簿來轉換 CSV 處理方式。 此 .NET 函式庫消除了手動字串解析的複雜性,同時提供強大的功能,例如 資料表轉換、單元層存取以及無縫 Excel 格式輸出。 該資料庫適用於 .NET Framework、.NET Core 和 .NET 5+,無需安裝 Microsoft Office,因此非常適合 ASP.NET Core 和 .NET Core Web API 專案。
本指南展示了讀取 CSV 檔案、處理自訂定界符、將記錄轉換為 DataTables,以及將 CSV 檔案寫入 Excel 格式的實用技術 - 所有這些都只需要最少的程式碼。 每個程式碼範例都包含詳細說明,以協助您瞭解系統如何運作。
使用 CSV 檔案入門
CSV 檔案(逗點分隔值)因其簡單性和廣泛的相容性,已成為資料交換和儲存的主要工具。 無論您是將資料匯入資料庫、匯出報表,或是與第三方系統整合,CSV 檔案都能提供輕量且彈性的格式來處理表格資料。 在 .NET 中,處理 CSV 檔案是一項常見的工作 - 開發人員經常需要解析、讀取和寫入 CSV 資料,作為商業邏輯、報表或資料遷移工作流程的一部分。
.NET 系統提供了多種處理 CSV 檔案的方式,從基本的字串和檔案操作到像 CsvHelper 之類的強大程式庫。 正確的解析是非常重要的,因為即使是簡單的逗號,當它出現在引號欄位內或作為資料本身的一部分時,也會造成複雜性。 透過利用正確的 .NET 工具並瞭解 CSV 解析的細微差異,開發人員可以確保資料的完整性,並簡化應用程式中的資料處理。
在 .NET 中讀取 CSV 檔案的最簡單方法是什麼? 最簡單的方法是使用 [WorkBook.LoadCSV](/csharp/excel/object-reference/api/IronXL.WorkBook.html) 方法將 CSV 資料直接匯入工作簿結構中。 此單一方法可自動處理解析、分隔符偵測和資料組織 - 無需建立新的 `StreamReader` 或手動處理每一行字串。 透過 Visual Studio 中的 NuGet Package Manager Console 安裝 IronXL。 開啟您的 .NET 專案並執行: ```shell :ProductInstall ``` 。 ```cs using IronXL; using System; class Program { static void Main(string[] args) { // Load CSV file into a workbook with one method call WorkBook workbook = WorkBook.LoadCSV("sales_data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ","); // Access the default worksheet containing CSV data WorkSheet sheet = workbook.DefaultWorkSheet; // Display all rows and CSV columns foreach (var row in sheet.Rows) { foreach (var cell in row) { Console.Write(cell.Value + "\t"); } Console.WriteLine(); } } } ``` ### 輸入 。 ### 輸出 。 另外,您也可以使用 CsvHelper 函式庫來讀取 CSV 檔案,該函式庫在處理 .NET 中的 CSV 作業方面很受歡迎。 若要使用 CsvHelper 讀取 CSV 檔案,請先建立 `StreamReader` 然後再建立新的 `CsvReader` 實例,通常會指定給變數,例如 `var csv` 或 `var reader`: ```cs using (var reader = new StreamReader("sales_data.csv")) using (var csv = new CsvHelper.CsvReader(reader, System.Globalization.CultureInfo.InvariantCulture)) { var records = csv.GetRecords().ToList(); // Process records as needed } ``` 您也可以使用 CsvHelper 來寫入 CSV 檔案,方法是建立 `StreamWriter` 和 `CsvWriter` 實例。 `LoadCSV` 方法接受三個參數:檔案路徑、用於內部表示的目標 Excel 格式,以及分隔值的分隔符。 載入後,CSV 內容可透過 [DefaultWorkSheet](/csharp/excel/object-reference/api/IronXL.WorkBook.html) 屬性存取,該屬性提供包含所有匯入記錄的主要工作表。 嵌套迴圈結構會遍歷工作表中的每一 `Row` 行,然後遍歷該行中的每一 `Cell` 單元。 `Value` 屬性會以物件的形式回傳儲存格內容,而 tab 字元則會在控制台輸出中建立可閱讀的欄位分隔。 無論來源檔案是否包含 10 行,或是處理記憶體中有成千上萬筆紀錄的大型 CSV 檔案,此模式都能以相同方式運作。手動 CSV 解析與使用函式庫比較如何? 瞭解 IronXL 所消除的複雜性有助於了解其價值。 手動 CSV 解析需要處理多種邊緣情況,這些情況看似簡單,但在任何專案中都會迅速成為問題。 ```cs using System; using System.IO; class Program { static void Main(string[] args) { // Manual approach - requires extensive code for basic functionality string path = "data.csv"; string[] lines = File.ReadAllLines(path); foreach (string line in lines) { // This breaks when CSV fields contain commas inside quotes string[] fields = line.Split(','); foreach (string field in fields) { Console.Write(field.Trim() + "\t"); } Console.WriteLine(); } } } ``` ### 輸入 。 ### 輸出 。 當 CSV 欄位在引號字串中包含內嵌逗號時,手動方式就會失敗 - 這是地址欄位或描述中常見的情況。 正確讀寫 CSV 檔案需要處理引號欄位、轉換引號、多行值和不同的編碼。 使用 CsvHelper 函式庫或類似的 CSV Helper 套件會增加依賴性,而滾動您自己的解析器則意味著要建立新的 `StreamReader` 、實作 `var` 讀取模式,並自行管理整個檔案讀取流程。 ```cs using IronXL; using System; class Program { static void Main(string[] args) { // IronXL approach - handles all edge cases automatically WorkBook workbook = WorkBook.LoadCSV("data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ","); var records = workbook.DefaultWorkSheet.Rows; foreach (var row in records) { foreach (var cell in row) { Console.Write(cell.Value + "\t"); } Console.WriteLine(); } } } ``` IronXL 版本可以完成相同的任務,同時正確處理引號 CSV 欄位、特殊字符和編碼變化。 `WorkBook` 類別在內部管理解析的複雜性,讓開發人員可以專注於處理資料,而不是擷取資料。 與需要建立新的 `CsvReader` 實例或 `CsvHelper` 套件組態的方法不同,IronXL 不需要額外的設定 - 只需載入即可使用。如何處理不同的 CSV 分隔符? CSV 檔案並不總是使用逗號作為分隔符。 由於十進位數字中使用逗號,歐洲系統匯出經常使用分號,而制表符分隔值 (TSV) 和管道分隔檔案則經常出現在各種應用程式的資料匯出中。 ```cs using IronXL; using System; class Program { static void Main(string[] args) { // Reading a semicolon-delimited file (common in European exports) WorkBook euroData = WorkBook.LoadCSV("german_report.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ";"); // Reading a tab-separated file WorkBook tsvData = WorkBook.LoadCSV("exported_data.tsv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "\t"); // Reading a pipe-delimited file WorkBook pipeData = WorkBook.LoadCSV("legacy_system.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "|"); // Access data identically regardless of original delimiter WorkSheet sheet = euroData.DefaultWorkSheet; int rowsCount = sheet.RowCount; Console.WriteLine($"Loaded {rowsCount} rows with {sheet.ColumnCount} CSV columns"); } } ``` `LoadCSV` 中的 `listDelimiter` 參數接受任何單一字元或轉換順序作為欄位分隔符。 Tab 字元使用 `\t` 轉換順序。 載入後,不論原始格式為何,資料結構都會保持一致,讓您可以輕鬆處理來自多個來源且分隔符不同的 CSV 檔案。 大多數 CSV 檔案的預設值為逗號,但此彈性可處理您的專案遇到的任何變化。 ### 輸入 。 ### 輸出 。 [`RowCount`](/csharp/excel/object-reference/api/IronXL.WorkSheet.html)和`ColumnCount`類別屬性可快速驗證檔案載入是否正確,這在處理不熟悉的資料來源或驗證 ASP.NET Core 應用程式中的使用者上傳時特別有用。將 CSV 轉換為 DataTable 的最佳方法是什麼? 將 CSV 資料轉換為 `DataTable` 可與資料庫作業、UI 應用程式中的資料綁定以及 LINQ 查詢進行整合。 `ToDataTable` 方法只需一次呼叫即可執行此轉換。 ```cs using IronXL; using System; using System.Data; class Program { static void Main(string[] args) { // Load CSV and convert to DataTable WorkBook workbook = WorkBook.LoadCSV("customers.csv", ExcelFileFormat.XLSX, ","); WorkSheet sheet = workbook.DefaultWorkSheet; // Convert worksheet to DataTable - true parameter uses CSV file header as column names DataTable dataTable = sheet.ToDataTable(true); // DataTable is now ready for database operations, binding, or LINQ queries Console.WriteLine($"DataTable created with {dataTable.Columns.Count} columns:"); foreach (DataColumn column in dataTable.Columns) { // Property names from CSV header become column names Console.WriteLine($" - {column.ColumnName}"); } Console.WriteLine($"\nTotal records: {dataTable.Rows.Count}"); // Access data using standard DataTable syntax foreach (DataRow row in dataTable.Rows) { // Access by column index or name attribute string name = row["Name"].ToString(); string email = row["Email"].ToString(); Console.WriteLine($"Customer: {name}, Email: {email}"); } } } ``` `ToDataTable` 中的布林參數決定第一行應該成為欄頭(`true`)還是資料(`false`)。 當設定為 `true` 時,產生的 `DataTable` 的欄位會攜帶 CSV 檔頭行的屬性名稱,可使用類似 `row["Name"]` 的欄位名稱直覺地存取資料。 此轉換對於需要使用 `SqlBulkCopy` 大量插入資料庫、在 Windows Forms 應用程式中填充 `DataGridView` 控件,或使用 LINQ 表達式執行複雜資料轉換的場景來說非常有價值。 `DataTable` 格式還能在您的 .NET Core Web API 專案中自然地與 Entity Framework 及其他 ORM 工具整合。CSV 檔案可以轉換為 Excel 格式嗎? IronXL.Excel 的突出功能之一是將 CSV 資料轉換為適當的 Excel 格式。 這可以在原本平面的 CSV 資料中加入公式、格式化、圖表和多個工作表 - 這是單獨撰寫 CSV 檔案所無法達到的。 ```cs using IronXL; using System; class Program { static void Main(string[] args) { // Load CSV data from file path string path = "quarterly_sales.csv"; WorkBook workbook = WorkBook.LoadCSV(path, ExcelFileFormat.XLSX, ","); // Save as Excel XLSX format - create new Excel file workbook.SaveAs("quarterly_sales.xlsx"); // Alternative: Save as legacy XLS format for older Excel versions workbook.SaveAs("quarterly_sales.xls"); Console.WriteLine("CSV successfully converted to Excel format"); } } ``` `SaveAs` 方法會根據檔案副檔名自動決定輸出格式。 `XLSX` 可建立與 Excel 2007 及更新版本相容的現代 Office Open XML 檔案,而 `XLS` 則可為較舊的應用程式建立傳統的 Binary Interchange File Format 文件。 ### 輸入 。 ### 輸出 。 。 當從資料庫或 API 匯出的 CSV 在分發給使用者之前需要強化時,此工作流程會特別有用。 轉換完成後,Excel 檔案可以獲得額外的格式化、公式,或與其他工作表結合 - 所有這些都可以透過 IronXL 的 [全面編輯功能](/csharp/excel/how-to/csharp-edit-excel-file/)以程式化的方式完成。 與使用新的 `StreamWriter` 實例的 `var` writer 來寫入 CSV 檔案的方法不同,IronXL 可以無縫處理整個檔案轉換。如何存取 CSV 資料中的特定儲存格值? 除了迭代所有記錄之外,IronXL.Excel 還可使用熟悉的 Excel 式位址直接存取儲存格。 這能夠在不同的資料類型中進行有針對性的資料擷取和類型安全的數值擷取。 ```cs using IronXL; using System; // Example class to demonstrate structured data access public class Employee { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } class Program { static void Main(string[] args) { WorkBook workbook = WorkBook.LoadCSV("inventory.csv", ExcelFileFormat.XLSX, ","); WorkSheet sheet = workbook.DefaultWorkSheet; // Access specific cells using Excel-style addresses by index string productName = sheet["A2"].StringValue; int quantity = sheet["B2"].IntValue; decimal price = sheet["C2"].DecimalValue; Console.WriteLine($"Product: {productName}"); Console.WriteLine($"Quantity: {quantity}"); Console.WriteLine($"Price: ${price:F2}"); // Access a range of cells - return records from column A var productRange = sheet["A2:A10"]; Console.WriteLine("\nAll products:"); foreach (var cell in productRange) { Console.WriteLine($" - {cell.StringValue}"); } } } ``` 儲存格位址遵循 Excel 慣例,其中字母代表 CSV 列 (A、B、C),數字代表行索引位置 (1、2、3)。 [Cell](/csharp/excel/object-reference/api/IronXL.Cell.html) 類提供特定類型的存取器,包括 `StringValue`, `IntValue`, `DecimalValue`, `BoolValue`, 和 `DateTimeValue`. 這些存取器會自動處理解析和轉換,省去了手動類型轉換,與將所有內容儲存為字串值相比,可減少記憶體開銷。 使用 `A2:A10` 之類的符號選擇範圍,會返回 [範圍](/csharp/excel/object-reference/api/IronXL.Range.html) 物件,該物件支援迭代、聚合函數和大量操作。 這在從大型 CSV 檔案中萃取特定欄位或矩形資料區域時,證明是非常有價值的。 例如,您可能會從特定欄位建立新的 List 值,或是將篩選的資料寫入另一個檔案。 ## CSV 檔案作業中的錯誤處理 在 .NET 應用程式中處理 CSV 檔案時,強大的錯誤處理功能至關重要。 讀寫 CSV 檔案可能會導致各種問題,例如遺失檔案、畸形資料或意外的解析錯誤。 為了管理這些情況,最好的做法是將檔案和資料作業包裝在 try-catch 區塊中,讓您的應用程式可以優雅地處理異常並提供有意義的回饋。 ## 結論 如果使用正確的方法,在 .NET 中讀取 CSV 檔案只需要極小的工作量。 IronXL 的 `LoadCSV` 方法可自動處理解析的複雜性,支援各種分隔符,並透過熟悉的試算表概念立即存取結構化資料。無論您是在建立 ASP.NET Core 應用程式、.NET Core Web API 或控制台專案,這個函式庫都能簡化 CSV 處理。 [開始免費試用](trial-license),體驗 IronXL 如何在您的 .NET 專案中簡化讀取 CSV 檔案的過程。 對於生產部署,[授權選項](/csharp/excel/licensing/)從 $799 開始,包含永久使用權和一年的支援。
手動 CSV 解析與使用函式庫比較如何? 瞭解 IronXL 所消除的複雜性有助於了解其價值。 手動 CSV 解析需要處理多種邊緣情況,這些情況看似簡單,但在任何專案中都會迅速成為問題。 ```cs using System; using System.IO; class Program { static void Main(string[] args) { // Manual approach - requires extensive code for basic functionality string path = "data.csv"; string[] lines = File.ReadAllLines(path); foreach (string line in lines) { // This breaks when CSV fields contain commas inside quotes string[] fields = line.Split(','); foreach (string field in fields) { Console.Write(field.Trim() + "\t"); } Console.WriteLine(); } } } ``` ### 輸入 。 ### 輸出 。 當 CSV 欄位在引號字串中包含內嵌逗號時,手動方式就會失敗 - 這是地址欄位或描述中常見的情況。 正確讀寫 CSV 檔案需要處理引號欄位、轉換引號、多行值和不同的編碼。 使用 CsvHelper 函式庫或類似的 CSV Helper 套件會增加依賴性,而滾動您自己的解析器則意味著要建立新的 `StreamReader` 、實作 `var` 讀取模式,並自行管理整個檔案讀取流程。 ```cs using IronXL; using System; class Program { static void Main(string[] args) { // IronXL approach - handles all edge cases automatically WorkBook workbook = WorkBook.LoadCSV("data.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ","); var records = workbook.DefaultWorkSheet.Rows; foreach (var row in records) { foreach (var cell in row) { Console.Write(cell.Value + "\t"); } Console.WriteLine(); } } } ``` IronXL 版本可以完成相同的任務,同時正確處理引號 CSV 欄位、特殊字符和編碼變化。 `WorkBook` 類別在內部管理解析的複雜性,讓開發人員可以專注於處理資料,而不是擷取資料。 與需要建立新的 `CsvReader` 實例或 `CsvHelper` 套件組態的方法不同,IronXL 不需要額外的設定 - 只需載入即可使用。如何處理不同的 CSV 分隔符? CSV 檔案並不總是使用逗號作為分隔符。 由於十進位數字中使用逗號,歐洲系統匯出經常使用分號,而制表符分隔值 (TSV) 和管道分隔檔案則經常出現在各種應用程式的資料匯出中。 ```cs using IronXL; using System; class Program { static void Main(string[] args) { // Reading a semicolon-delimited file (common in European exports) WorkBook euroData = WorkBook.LoadCSV("german_report.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ";"); // Reading a tab-separated file WorkBook tsvData = WorkBook.LoadCSV("exported_data.tsv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "\t"); // Reading a pipe-delimited file WorkBook pipeData = WorkBook.LoadCSV("legacy_system.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: "|"); // Access data identically regardless of original delimiter WorkSheet sheet = euroData.DefaultWorkSheet; int rowsCount = sheet.RowCount; Console.WriteLine($"Loaded {rowsCount} rows with {sheet.ColumnCount} CSV columns"); } } ``` `LoadCSV` 中的 `listDelimiter` 參數接受任何單一字元或轉換順序作為欄位分隔符。 Tab 字元使用 `\t` 轉換順序。 載入後,不論原始格式為何,資料結構都會保持一致,讓您可以輕鬆處理來自多個來源且分隔符不同的 CSV 檔案。 大多數 CSV 檔案的預設值為逗號,但此彈性可處理您的專案遇到的任何變化。 ### 輸入 。 ### 輸出 。 [`RowCount`](/csharp/excel/object-reference/api/IronXL.WorkSheet.html)和`ColumnCount`類別屬性可快速驗證檔案載入是否正確,這在處理不熟悉的資料來源或驗證 ASP.NET Core 應用程式中的使用者上傳時特別有用。將 CSV 轉換為 DataTable 的最佳方法是什麼? 將 CSV 資料轉換為 `DataTable` 可與資料庫作業、UI 應用程式中的資料綁定以及 LINQ 查詢進行整合。 `ToDataTable` 方法只需一次呼叫即可執行此轉換。 ```cs using IronXL; using System; using System.Data; class Program { static void Main(string[] args) { // Load CSV and convert to DataTable WorkBook workbook = WorkBook.LoadCSV("customers.csv", ExcelFileFormat.XLSX, ","); WorkSheet sheet = workbook.DefaultWorkSheet; // Convert worksheet to DataTable - true parameter uses CSV file header as column names DataTable dataTable = sheet.ToDataTable(true); // DataTable is now ready for database operations, binding, or LINQ queries Console.WriteLine($"DataTable created with {dataTable.Columns.Count} columns:"); foreach (DataColumn column in dataTable.Columns) { // Property names from CSV header become column names Console.WriteLine($" - {column.ColumnName}"); } Console.WriteLine($"\nTotal records: {dataTable.Rows.Count}"); // Access data using standard DataTable syntax foreach (DataRow row in dataTable.Rows) { // Access by column index or name attribute string name = row["Name"].ToString(); string email = row["Email"].ToString(); Console.WriteLine($"Customer: {name}, Email: {email}"); } } } ``` `ToDataTable` 中的布林參數決定第一行應該成為欄頭(`true`)還是資料(`false`)。 當設定為 `true` 時,產生的 `DataTable` 的欄位會攜帶 CSV 檔頭行的屬性名稱,可使用類似 `row["Name"]` 的欄位名稱直覺地存取資料。 此轉換對於需要使用 `SqlBulkCopy` 大量插入資料庫、在 Windows Forms 應用程式中填充 `DataGridView` 控件,或使用 LINQ 表達式執行複雜資料轉換的場景來說非常有價值。 `DataTable` 格式還能在您的 .NET Core Web API 專案中自然地與 Entity Framework 及其他 ORM 工具整合。CSV 檔案可以轉換為 Excel 格式嗎? IronXL.Excel 的突出功能之一是將 CSV 資料轉換為適當的 Excel 格式。 這可以在原本平面的 CSV 資料中加入公式、格式化、圖表和多個工作表 - 這是單獨撰寫 CSV 檔案所無法達到的。 ```cs using IronXL; using System; class Program { static void Main(string[] args) { // Load CSV data from file path string path = "quarterly_sales.csv"; WorkBook workbook = WorkBook.LoadCSV(path, ExcelFileFormat.XLSX, ","); // Save as Excel XLSX format - create new Excel file workbook.SaveAs("quarterly_sales.xlsx"); // Alternative: Save as legacy XLS format for older Excel versions workbook.SaveAs("quarterly_sales.xls"); Console.WriteLine("CSV successfully converted to Excel format"); } } ``` `SaveAs` 方法會根據檔案副檔名自動決定輸出格式。 `XLSX` 可建立與 Excel 2007 及更新版本相容的現代 Office Open XML 檔案,而 `XLS` 則可為較舊的應用程式建立傳統的 Binary Interchange File Format 文件。 ### 輸入 。 ### 輸出 。 。 當從資料庫或 API 匯出的 CSV 在分發給使用者之前需要強化時,此工作流程會特別有用。 轉換完成後,Excel 檔案可以獲得額外的格式化、公式,或與其他工作表結合 - 所有這些都可以透過 IronXL 的 [全面編輯功能](/csharp/excel/how-to/csharp-edit-excel-file/)以程式化的方式完成。 與使用新的 `StreamWriter` 實例的 `var` writer 來寫入 CSV 檔案的方法不同,IronXL 可以無縫處理整個檔案轉換。如何存取 CSV 資料中的特定儲存格值? 除了迭代所有記錄之外,IronXL.Excel 還可使用熟悉的 Excel 式位址直接存取儲存格。 這能夠在不同的資料類型中進行有針對性的資料擷取和類型安全的數值擷取。 ```cs using IronXL; using System; // Example class to demonstrate structured data access public class Employee { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } class Program { static void Main(string[] args) { WorkBook workbook = WorkBook.LoadCSV("inventory.csv", ExcelFileFormat.XLSX, ","); WorkSheet sheet = workbook.DefaultWorkSheet; // Access specific cells using Excel-style addresses by index string productName = sheet["A2"].StringValue; int quantity = sheet["B2"].IntValue; decimal price = sheet["C2"].DecimalValue; Console.WriteLine($"Product: {productName}"); Console.WriteLine($"Quantity: {quantity}"); Console.WriteLine($"Price: ${price:F2}"); // Access a range of cells - return records from column A var productRange = sheet["A2:A10"]; Console.WriteLine("\nAll products:"); foreach (var cell in productRange) { Console.WriteLine($" - {cell.StringValue}"); } } } ``` 儲存格位址遵循 Excel 慣例,其中字母代表 CSV 列 (A、B、C),數字代表行索引位置 (1、2、3)。 [Cell](/csharp/excel/object-reference/api/IronXL.Cell.html) 類提供特定類型的存取器,包括 `StringValue`, `IntValue`, `DecimalValue`, `BoolValue`, 和 `DateTimeValue`. 這些存取器會自動處理解析和轉換,省去了手動類型轉換,與將所有內容儲存為字串值相比,可減少記憶體開銷。 使用 `A2:A10` 之類的符號選擇範圍,會返回 [範圍](/csharp/excel/object-reference/api/IronXL.Range.html) 物件,該物件支援迭代、聚合函數和大量操作。 這在從大型 CSV 檔案中萃取特定欄位或矩形資料區域時,證明是非常有價值的。 例如,您可能會從特定欄位建立新的 List 值,或是將篩選的資料寫入另一個檔案。 ## CSV 檔案作業中的錯誤處理 在 .NET 應用程式中處理 CSV 檔案時,強大的錯誤處理功能至關重要。 讀寫 CSV 檔案可能會導致各種問題,例如遺失檔案、畸形資料或意外的解析錯誤。 為了管理這些情況,最好的做法是將檔案和資料作業包裝在 try-catch 區塊中,讓您的應用程式可以優雅地處理異常並提供有意義的回饋。 ## 結論 如果使用正確的方法,在 .NET 中讀取 CSV 檔案只需要極小的工作量。 IronXL 的 `LoadCSV` 方法可自動處理解析的複雜性,支援各種分隔符,並透過熟悉的試算表概念立即存取結構化資料。無論您是在建立 ASP.NET Core 應用程式、.NET Core Web API 或控制台專案,這個函式庫都能簡化 CSV 處理。 [開始免費試用](trial-license),體驗 IronXL 如何在您的 .NET 專案中簡化讀取 CSV 檔案的過程。 對於生產部署,[授權選項](/csharp/excel/licensing/)從 $799 開始,包含永久使用權和一年的支援。
將 CSV 轉換為 DataTable 的最佳方法是什麼? 將 CSV 資料轉換為 `DataTable` 可與資料庫作業、UI 應用程式中的資料綁定以及 LINQ 查詢進行整合。 `ToDataTable` 方法只需一次呼叫即可執行此轉換。 ```cs using IronXL; using System; using System.Data; class Program { static void Main(string[] args) { // Load CSV and convert to DataTable WorkBook workbook = WorkBook.LoadCSV("customers.csv", ExcelFileFormat.XLSX, ","); WorkSheet sheet = workbook.DefaultWorkSheet; // Convert worksheet to DataTable - true parameter uses CSV file header as column names DataTable dataTable = sheet.ToDataTable(true); // DataTable is now ready for database operations, binding, or LINQ queries Console.WriteLine($"DataTable created with {dataTable.Columns.Count} columns:"); foreach (DataColumn column in dataTable.Columns) { // Property names from CSV header become column names Console.WriteLine($" - {column.ColumnName}"); } Console.WriteLine($"\nTotal records: {dataTable.Rows.Count}"); // Access data using standard DataTable syntax foreach (DataRow row in dataTable.Rows) { // Access by column index or name attribute string name = row["Name"].ToString(); string email = row["Email"].ToString(); Console.WriteLine($"Customer: {name}, Email: {email}"); } } } ``` `ToDataTable` 中的布林參數決定第一行應該成為欄頭(`true`)還是資料(`false`)。 當設定為 `true` 時,產生的 `DataTable` 的欄位會攜帶 CSV 檔頭行的屬性名稱,可使用類似 `row["Name"]` 的欄位名稱直覺地存取資料。 此轉換對於需要使用 `SqlBulkCopy` 大量插入資料庫、在 Windows Forms 應用程式中填充 `DataGridView` 控件,或使用 LINQ 表達式執行複雜資料轉換的場景來說非常有價值。 `DataTable` 格式還能在您的 .NET Core Web API 專案中自然地與 Entity Framework 及其他 ORM 工具整合。CSV 檔案可以轉換為 Excel 格式嗎? IronXL.Excel 的突出功能之一是將 CSV 資料轉換為適當的 Excel 格式。 這可以在原本平面的 CSV 資料中加入公式、格式化、圖表和多個工作表 - 這是單獨撰寫 CSV 檔案所無法達到的。 ```cs using IronXL; using System; class Program { static void Main(string[] args) { // Load CSV data from file path string path = "quarterly_sales.csv"; WorkBook workbook = WorkBook.LoadCSV(path, ExcelFileFormat.XLSX, ","); // Save as Excel XLSX format - create new Excel file workbook.SaveAs("quarterly_sales.xlsx"); // Alternative: Save as legacy XLS format for older Excel versions workbook.SaveAs("quarterly_sales.xls"); Console.WriteLine("CSV successfully converted to Excel format"); } } ``` `SaveAs` 方法會根據檔案副檔名自動決定輸出格式。 `XLSX` 可建立與 Excel 2007 及更新版本相容的現代 Office Open XML 檔案,而 `XLS` 則可為較舊的應用程式建立傳統的 Binary Interchange File Format 文件。 ### 輸入 。 ### 輸出 。 。 當從資料庫或 API 匯出的 CSV 在分發給使用者之前需要強化時,此工作流程會特別有用。 轉換完成後,Excel 檔案可以獲得額外的格式化、公式,或與其他工作表結合 - 所有這些都可以透過 IronXL 的 [全面編輯功能](/csharp/excel/how-to/csharp-edit-excel-file/)以程式化的方式完成。 與使用新的 `StreamWriter` 實例的 `var` writer 來寫入 CSV 檔案的方法不同,IronXL 可以無縫處理整個檔案轉換。如何存取 CSV 資料中的特定儲存格值? 除了迭代所有記錄之外,IronXL.Excel 還可使用熟悉的 Excel 式位址直接存取儲存格。 這能夠在不同的資料類型中進行有針對性的資料擷取和類型安全的數值擷取。 ```cs using IronXL; using System; // Example class to demonstrate structured data access public class Employee { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } class Program { static void Main(string[] args) { WorkBook workbook = WorkBook.LoadCSV("inventory.csv", ExcelFileFormat.XLSX, ","); WorkSheet sheet = workbook.DefaultWorkSheet; // Access specific cells using Excel-style addresses by index string productName = sheet["A2"].StringValue; int quantity = sheet["B2"].IntValue; decimal price = sheet["C2"].DecimalValue; Console.WriteLine($"Product: {productName}"); Console.WriteLine($"Quantity: {quantity}"); Console.WriteLine($"Price: ${price:F2}"); // Access a range of cells - return records from column A var productRange = sheet["A2:A10"]; Console.WriteLine("\nAll products:"); foreach (var cell in productRange) { Console.WriteLine($" - {cell.StringValue}"); } } } ``` 儲存格位址遵循 Excel 慣例,其中字母代表 CSV 列 (A、B、C),數字代表行索引位置 (1、2、3)。 [Cell](/csharp/excel/object-reference/api/IronXL.Cell.html) 類提供特定類型的存取器,包括 `StringValue`, `IntValue`, `DecimalValue`, `BoolValue`, 和 `DateTimeValue`. 這些存取器會自動處理解析和轉換,省去了手動類型轉換,與將所有內容儲存為字串值相比,可減少記憶體開銷。 使用 `A2:A10` 之類的符號選擇範圍,會返回 [範圍](/csharp/excel/object-reference/api/IronXL.Range.html) 物件,該物件支援迭代、聚合函數和大量操作。 這在從大型 CSV 檔案中萃取特定欄位或矩形資料區域時,證明是非常有價值的。 例如,您可能會從特定欄位建立新的 List 值,或是將篩選的資料寫入另一個檔案。 ## CSV 檔案作業中的錯誤處理 在 .NET 應用程式中處理 CSV 檔案時,強大的錯誤處理功能至關重要。 讀寫 CSV 檔案可能會導致各種問題,例如遺失檔案、畸形資料或意外的解析錯誤。 為了管理這些情況,最好的做法是將檔案和資料作業包裝在 try-catch 區塊中,讓您的應用程式可以優雅地處理異常並提供有意義的回饋。 ## 結論 如果使用正確的方法,在 .NET 中讀取 CSV 檔案只需要極小的工作量。 IronXL 的 `LoadCSV` 方法可自動處理解析的複雜性,支援各種分隔符,並透過熟悉的試算表概念立即存取結構化資料。無論您是在建立 ASP.NET Core 應用程式、.NET Core Web API 或控制台專案,這個函式庫都能簡化 CSV 處理。 [開始免費試用](trial-license),體驗 IronXL 如何在您的 .NET 專案中簡化讀取 CSV 檔案的過程。 對於生產部署,[授權選項](/csharp/excel/licensing/)從 $799 開始,包含永久使用權和一年的支援。
如何存取 CSV 資料中的特定儲存格值? 除了迭代所有記錄之外,IronXL.Excel 還可使用熟悉的 Excel 式位址直接存取儲存格。 這能夠在不同的資料類型中進行有針對性的資料擷取和類型安全的數值擷取。 ```cs using IronXL; using System; // Example class to demonstrate structured data access public class Employee { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } class Program { static void Main(string[] args) { WorkBook workbook = WorkBook.LoadCSV("inventory.csv", ExcelFileFormat.XLSX, ","); WorkSheet sheet = workbook.DefaultWorkSheet; // Access specific cells using Excel-style addresses by index string productName = sheet["A2"].StringValue; int quantity = sheet["B2"].IntValue; decimal price = sheet["C2"].DecimalValue; Console.WriteLine($"Product: {productName}"); Console.WriteLine($"Quantity: {quantity}"); Console.WriteLine($"Price: ${price:F2}"); // Access a range of cells - return records from column A var productRange = sheet["A2:A10"]; Console.WriteLine("\nAll products:"); foreach (var cell in productRange) { Console.WriteLine($" - {cell.StringValue}"); } } } ``` 儲存格位址遵循 Excel 慣例,其中字母代表 CSV 列 (A、B、C),數字代表行索引位置 (1、2、3)。 [Cell](/csharp/excel/object-reference/api/IronXL.Cell.html) 類提供特定類型的存取器,包括 `StringValue`, `IntValue`, `DecimalValue`, `BoolValue`, 和 `DateTimeValue`. 這些存取器會自動處理解析和轉換,省去了手動類型轉換,與將所有內容儲存為字串值相比,可減少記憶體開銷。 使用 `A2:A10` 之類的符號選擇範圍,會返回 [範圍](/csharp/excel/object-reference/api/IronXL.Range.html) 物件,該物件支援迭代、聚合函數和大量操作。 這在從大型 CSV 檔案中萃取特定欄位或矩形資料區域時,證明是非常有價值的。 例如,您可能會從特定欄位建立新的 List 值,或是將篩選的資料寫入另一個檔案。 ## CSV 檔案作業中的錯誤處理 在 .NET 應用程式中處理 CSV 檔案時,強大的錯誤處理功能至關重要。 讀寫 CSV 檔案可能會導致各種問題,例如遺失檔案、畸形資料或意外的解析錯誤。 為了管理這些情況,最好的做法是將檔案和資料作業包裝在 try-catch 區塊中,讓您的應用程式可以優雅地處理異常並提供有意義的回饋。 ## 結論 如果使用正確的方法,在 .NET 中讀取 CSV 檔案只需要極小的工作量。 IronXL 的 `LoadCSV` 方法可自動處理解析的複雜性,支援各種分隔符,並透過熟悉的試算表概念立即存取結構化資料。無論您是在建立 ASP.NET Core 應用程式、.NET Core Web API 或控制台專案,這個函式庫都能簡化 CSV 處理。 [開始免費試用](trial-license),體驗 IronXL 如何在您的 .NET 專案中簡化讀取 CSV 檔案的過程。 對於生產部署,[授權選項](/csharp/excel/licensing/)從 $799 開始,包含永久使用權和一年的支援。
常見問題解答
在 C# 中讀取 CSV 檔案的最簡單方法是什麼?
在 C# 中讀取 CSV 檔案最簡單的方法是使用 IronXL,它提供了一種直接且有效率的方法來處理 CSV 資料。
IronXL能否高效處理大型CSV檔案?
是的,IronXL 的設計宗旨就是高效處理大型 CSV 文件,因此它能夠處理龐大的資料集而不會出現效能問題。
IronXL 與 .NET 應用程式相容嗎?
IronXL 與 .NET 應用程式完全相容,使開發人員能夠輕鬆地將 CSV 讀取功能整合到他們的 C# 專案中。
IronXL 是否支援讀取使用不同分隔符號的 CSV 檔案?
IronXL 支援讀取具有各種分隔符的 CSV 文件,能夠靈活處理不同格式的文件。
IronXL 能否解析帶有標題的 CSV 檔案?
是的,IronXL 可以解析帶有標題的 CSV 文件,讓您可以輕鬆地按列名存取資料。
IronXL 如何簡化 CSV 資料處理?
IronXL 簡化了 CSV 資料操作,提供了直接在 C# 中讀取、編輯和寫入 CSV 資料的直覺方法。
IronXL 是否支援非同步讀取 CSV 檔案?
IronXL 提供對非同步操作的支持,使您能夠在不阻塞主應用程式執行緒的情況下讀取 CSV 檔案。
IronXL能否將CSV資料轉換為Excel格式?
IronXL 可以將 CSV 資料轉換為 Excel 格式,讓您能夠利用 Excel 的進階功能進行資料分析和示範。
IronXL讀取CSV檔案是否有任何依賴項?
IronXL 是一個獨立的庫,無需任何外部依賴項即可讀取 CSV 文件,從而簡化了專案中的設定過程。
IronXL 能否將 CSV 資料匯出為其他格式?
是的,IronXL 可以將 CSV 資料匯出為多種格式,包括 Excel,從而在資料處理和報表方面提供了多功能性。






