C# CSV 解析器(分步)教程
IronXL 允許在C#中只用兩行程式碼解析和轉換CSV文件到/從Excel格式。 本教程演示如何使用IronXL程式庫的簡單API將XLSX、XLS和TSV文件轉換為CSV格式,無需複雜的手動解析程式碼。 該程式庫在內部處理所有文件格式轉換的複雜細節,使其非常適合需要快速可靠的CSV解析而不需撰寫大量程式碼的開發人員。
您是否曾經被困在嘗試解析CSV文件並將其轉換為XLSX,或者將XLSX文件轉換為CSV以處理.NET中的重要任務,但不知如何在不撰寫大量程式碼的情況下完成此操作?
許多CSV程式庫的出現是為了解決這個問題。 然而,在本教程中將使用IronXL C# Excel 程式庫來執行這些任務,只需兩行程式碼。 與需要手動解析分隔符和處理邊界情況的傳統方法不同,IronXL提供了一個無論在何種平台均可靠運作的解決方案,包括Windows、Linux和macOS。
開始之前,您只需要Visual Studio。 按照下面的指示進行詳細的安裝步驟。 本教程專為具有基本C#知識的開發人員設計,旨在讓他們不依賴Interop工作來處理Excel文件。
如何在Visual Studio中建立一個新專案?
打開Visual Studio編輯器。
進入Visual Studio的文件選單。 選擇"新建專案",然後選擇控制台應用程式。 這樣建立的簡單專案結構適合學習如何建立和操作Excel文件。
輸入專案名稱並選擇專案位置。 然後點擊建立按鈕來建立專案。 選擇所需的.NET Framework,如下圖所示:
圖1:在Visual Studio中使用.NET Framework 4.7.2配置您的新的C#控制台應用程式專案
將打開program.cs文件,以便您輸入邏輯並建立/運行應用程式。 這就是我們將使用IronXL的簡單API新增我們的CSV解析程式碼的地方。
如何安裝IronXL C#程式庫?
IronXL程式庫可以通過多種方式下載和安裝。 今天,我們將重點介紹在專業開發環境中最常用的兩種方法:
- 使用Visual Studio的NuGet包管理器
- 使用Visual Studio命令行
這兩種方法同樣有效,選擇取決於您更喜歡圖形介面還是命令行工具。 有關不同環境的詳細安裝指南,請參閱官方文件。
我應該使用Visual Studio的NuGet包管理器嗎?
在Visual Studio中,可以使用NuGet包管理器UI直接將包安裝到專案中。 此方法特別適合那些喜歡視覺介面的開發人員,他們希望在安裝前查看包的詳細資訊。 下面的截圖顯示瞭如何打開它。
Access the NuGet Package Manager in Visual Studio by navigating to Tools > NuGet Package Manager > Manage NuGet Packages for Solution
包管理器UI提供了一個瀏覽功能,顯示在NuGet網站上可用的包庫列表。輸入"IronXL",如下圖所示以查找IronXL包。 您還可以探索IronXL提供的相關Excel操作功能。
在Visual Studio的NuGet包管理器中顯示的IronXL.Excel程式庫,使開發者在.NET應用程式中讀取、生成和編輯Excel文件。 該包顯示有250K次下載和版本2022.9.9454準備安裝
選擇IronXL.Excel包並點擊安裝按鈕將其新增到專案中。 安裝過程將自動處理所有依賴項並配置您的專案以供Excel文件操作。
何時應使用Visual Studio的命令行?
在Visual Studio選單中,前往工具 > NuGet包管理器 > 點擊包管理器控制台。 這種方法較受那些熟悉命令行介面或需要在構建腳本中自動化安裝過程的開發人員的歡迎。
在Visual Studio中打開NuGet包管理器控制台以安裝CSV解析程式庫
包管理器控制台將出現在螢幕底部。 輸入以下命令並按回車。 IronXL將被安裝。 這種方法在您需要安裝特定版本,或在Azure的部署腳本或AWS環境中工作時特別有用。
Install-Package IronXL.Excel
包管理器控制台顯示IronXL.Excel版本2022.11.10251的成功安裝,顯示來自NuGet庫的包恢復過程和下載確認
如何使用IronXL解析CSV文件?
手動解析CSV需要撰寫大量精確的程式碼來完成任務,但使用IronXL,只需幾行程式碼。 這種簡單性在您需要快速在不同電子表格格式之間轉換時尤其有價值。
使用傳統C#程式碼解析CSV格式化的文件需要大量繁瑣的程式碼。 下面是一個程式碼範例,展示了使用傳統方法來實現這一點:
using FileHelpers;
using System;
namespace parse_csv
{
[DelimitedRecord(",")]
public class Record
{
public string Name;
public string Age;
}
class Program
{
static void Main(string[] args)
{
// Create a FileHelperEngine for the Record class
var fileHelperEngine = new FileHelperEngine<Record>();
// Read records from the CSV file into an array
// Note: This requires proper error handling for production use
var records = fileHelperEngine.ReadFile(@"C:\File\records.csv");
// Print each record's Name and Age
foreach (var record in records)
{
Console.WriteLine(record.Name);
Console.WriteLine(record.Age);
}
}
}
}
using FileHelpers;
using System;
namespace parse_csv
{
[DelimitedRecord(",")]
public class Record
{
public string Name;
public string Age;
}
class Program
{
static void Main(string[] args)
{
// Create a FileHelperEngine for the Record class
var fileHelperEngine = new FileHelperEngine<Record>();
// Read records from the CSV file into an array
// Note: This requires proper error handling for production use
var records = fileHelperEngine.ReadFile(@"C:\File\records.csv");
// Print each record's Name and Age
foreach (var record in records)
{
Console.WriteLine(record.Name);
Console.WriteLine(record.Age);
}
}
}
}
Imports FileHelpers
Imports System
Namespace parse_csv
<DelimitedRecord(",")>
Public Class Record
Public Name As String
Public Age As String
End Class
Module Program
Sub Main(args As String())
' Create a FileHelperEngine for the Record class
Dim fileHelperEngine As New FileHelperEngine(Of Record)()
' Read records from the CSV file into an array
' Note: This requires proper error handling for production use
Dim records = fileHelperEngine.ReadFile("C:\File\records.csv")
' Print each record's Name and Age
For Each record In records
Console.WriteLine(record.Name)
Console.WriteLine(record.Age)
Next
End Sub
End Module
End Namespace
但使用IronXL,只需幾行程式碼即可完成,帶有內建的錯誤處理和對多種文件格式的支援。
使用IronXL,您可以從XLSX、XLS、TSV等來源解析CSV文件。 該程式庫還支援在ASP.NET應用程式中讀取Excel文件和Blazor應用程式。 在本教程中,我們將探討以下轉換:
- 從XLSX文件解析CSV文件
- 從XLS文件解析CSV文件
- 從TSV文件解析CSV文件
如何將XLSX文件轉換為CSV?
打開Microsoft Excel並建立一個新的XLSX文件。用一些模擬資料填充其行和列。 對於生產環境,您可能希望使用IronXL以程式碼方式建立Excel文件。 下圖顯示了本教程中用於所有轉換的文件。
圖6:範例Excel資料顯示一個基本庫存結構,將用於演示C#中的CSV解析
一旦您準備好文件,寫下下面的程式碼範例並執行程式。 IronXL處理所有複雜的解析,包括正確處理特殊字元和資料型別:
using IronXL;
class Program
{
static void Main()
{
// Load the XLSX file into a WorkBook object
// The Load method automatically detects the file format
WorkBook wb = WorkBook.Load("test.xlsx");
// Save the WorkBook as a CSV file
// This method handles all formatting and conversion automatically
wb.SaveAsCsv("Parsed CSV.csv");
// Optional: Save with custom delimiter
// wb.SaveAsCsv("Parsed CSV.csv", delimiter: ";");
}
}
using IronXL;
class Program
{
static void Main()
{
// Load the XLSX file into a WorkBook object
// The Load method automatically detects the file format
WorkBook wb = WorkBook.Load("test.xlsx");
// Save the WorkBook as a CSV file
// This method handles all formatting and conversion automatically
wb.SaveAsCsv("Parsed CSV.csv");
// Optional: Save with custom delimiter
// wb.SaveAsCsv("Parsed CSV.csv", delimiter: ";");
}
}
Imports IronXL
Class Program
Shared Sub Main()
' Load the XLSX file into a WorkBook object
' The Load method automatically detects the file format
Dim wb As WorkBook = WorkBook.Load("test.xlsx")
' Save the WorkBook as a CSV file
' This method handles all formatting and conversion automatically
wb.SaveAsCsv("Parsed CSV.csv")
' Optional: Save with custom delimiter
' wb.SaveAsCsv("Parsed CSV.csv", delimiter: ";")
End Sub
End Class
執行完成後,將建立一個名為Parsed CSV.csv的新文件。 您可以在任何編輯器或閱讀器中讀取CSV文件。您也可以將CSV資料再導入Excel中進行進一步操作。 下圖顯示了上述命令的輸出—我們生成的CSV資料。 在輸出文件中,雙引號代表粗體值。
圖7:由SaveAsCsv方法生成的CSV輸出,顯示以逗號分隔格式轉換的Excel資料
將XLS文件轉換為CSV的步驟是什麼?
在此範例中,我們將看到如何將XLS文件轉換為CSV格式。 該過程與XLSX轉換相同,展現了IronXL在處理不同Excel文件格式時的靈活性。
首先,讓我們建立一個可以轉換為CSV格式的XLS範例文件。 請注意,XLS是舊的Excel格式,但IronXL不費吹灰之力地處理它與現代格式:
圖8:展示具有自動計算的庫存資料結構的範例Excel文件,可以使用C# CSV程式庫進行解析
接下來,我們將執行下面的程式碼塊,將範例XLS文件轉換為CSV文件。IronXL在轉換過程中保留資料完整性,包括公式和計算:
using IronXL;
class Program
{
static void Main()
{
// Load the XLS file into a WorkBook object
// IronXL automatically handles the older XLS format
WorkBook wb = WorkBook.Load("XLS.xls");
// Save the WorkBook as a CSV file
// All formulas are evaluated and results are exported
wb.SaveAsCsv("Example2.csv");
// Optional: Export specific worksheet
// WorkSheet ws = wb.GetWorkSheet("Sheet1");
// ws.SaveAsCsv("Example2.csv");
}
}
using IronXL;
class Program
{
static void Main()
{
// Load the XLS file into a WorkBook object
// IronXL automatically handles the older XLS format
WorkBook wb = WorkBook.Load("XLS.xls");
// Save the WorkBook as a CSV file
// All formulas are evaluated and results are exported
wb.SaveAsCsv("Example2.csv");
// Optional: Export specific worksheet
// WorkSheet ws = wb.GetWorkSheet("Sheet1");
// ws.SaveAsCsv("Example2.csv");
}
}
Imports IronXL
Class Program
Shared Sub Main()
' Load the XLS file into a WorkBook object
' IronXL automatically handles the older XLS format
Dim wb As WorkBook = WorkBook.Load("XLS.xls")
' Save the WorkBook as a CSV file
' All formulas are evaluated and results are exported
wb.SaveAsCsv("Example2.csv")
' Optional: Export specific worksheet
' Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")
' ws.SaveAsCsv("Example2.csv")
End Sub
End Class
在上述程式碼執行完成後,您將擁有一個新生成的CSV文件。對於更複雜的情況,您可能希望選擇特定範圍或在導出前對資料進行排序。
在WordPad中打開的範例CSV文件,顯示格式良好的以逗號分隔的資料,帶有標題和多個產品條目
如何從TSV格式解析CSV文件?
電子表格應用通常使用TSV文件或Tab-Separated Values文件在資料庫之間傳輸資料。 它保存了一個資料表,其中資料列由制表符分隔,每條記錄位於不同的行上。當您的資料包含可能干擾CSV解析的逗號時,TSV文件特別有用。
IronXL提供CSV解析器以從TSV格式解析CSV文件,以便更好地管理資料。 轉換過程很簡單,並在整個過程中保持資料完整性。
讓我們從範例開始吧。 首先,我們將建立一個包含學生資料的TSV文件:
以Microsoft Word展示的Tab分隔學生資料範例,展示TSV文件的結構,包含名稱、電子郵件、R-NO和成績的列
using IronXL;
class Program
{
static void Main()
{
// Load the TSV file into a WorkBook object
// IronXL automatically detects tab-separated format
WorkBook wb = WorkBook.Load("TSV.tsv");
// Save the WorkBook as a CSV file
// Tabs are converted to commas automatically
wb.SaveAsCsv("Example3.csv");
// Alternative: Load with explicit delimiter specification
// WorkBook wb = WorkBook.LoadCSV("TSV.tsv", delimiter: "\t");
}
}
using IronXL;
class Program
{
static void Main()
{
// Load the TSV file into a WorkBook object
// IronXL automatically detects tab-separated format
WorkBook wb = WorkBook.Load("TSV.tsv");
// Save the WorkBook as a CSV file
// Tabs are converted to commas automatically
wb.SaveAsCsv("Example3.csv");
// Alternative: Load with explicit delimiter specification
// WorkBook wb = WorkBook.LoadCSV("TSV.tsv", delimiter: "\t");
}
}
Imports IronXL
Class Program
Shared Sub Main()
' Load the TSV file into a WorkBook object
' IronXL automatically detects tab-separated format
Dim wb As WorkBook = WorkBook.Load("TSV.tsv")
' Save the WorkBook as a CSV file
' Tabs are converted to commas automatically
wb.SaveAsCsv("Example3.csv")
' Alternative: Load with explicit delimiter specification
' Dim wb As WorkBook = WorkBook.LoadCSV("TSV.tsv", delimiter:=vbTab)
End Sub
End Class
以下是CSV格式的輸出。 請注意IronXL如何在保持資料結構的同時,正確地將制表符分隔的值轉換為逗號分隔的值:
WordPad中打開的範例CSV文件,顯示學生記錄,包含用逗號分隔的名稱、電子郵件、學號和成績字段
使用IronXL解析CSV的主要優勢是什麼?
本教程演示了如何在C#中使用IronXL將各種文件格式解析為CSV。 程式庫提供了一個一致的API,適用於所有文件格式,使得處理不同的Excel版本和格式時不需要更改程式碼結構。
此外,IronXL程式庫提供以下功能,使其成為操作Excel的絕佳選擇:
- 提供一套廣泛的功能,包括資料操作和資料導出到各種格式,包括JSON、XML和HTML。
- 支援完全相容Excel的圖表管理,允許程式化圖表的建立和修改。
- 支援例如對齊方式、字體大小、顏色、邊框和背景樣式等單元格格式化。
- 能夠定製Excel方法,包括凍結窗格、新增公式、條件格式化和合併單元格。
- 支援Excel通過密碼加密,適用于整個工作簿和單獨的工作表。
- 支持命名範圍和命名表,以便更好地組織資料。
- 高級功能,如自動調整行和列大小、超連結和評論。
IronXL在性能優化方面也表現出色。 根據最新性能改進,該程式庫現在能夠在使用顯著更少的記憶體的情況下處理文件快40倍,適合大型資料處理任務。 該程式庫可在Docker容器中、Linux系統上和macOS環境中無縫運作,提供真正的跨平台相容性。
對於企業環境,IronXL提供強大的安全功能,並遵從行業標準。 該程式庫支持VB.NET以及C#,使其可用於不同的開發團隊。 當處理大文件時,請注意文件大小限制和可用的優化策略。
查看IronXL的功能、程式碼範例和文件,以獲取有關IronXL工作原理的更多資訊。 您可以探索特定使用案例,如用於移動開發的與.NET MAUI協作或整合資料表進行資料庫操作。 下載IronXL並免費試用30天,附帶試用授權金鑰。 用於生產環境,您需要應用授權金鑰,可以在web.config中配置以供web應用程式使用。 造訪授權頁面以獲取有關授權條款和條件的更多資訊,包含授權擴展和升級的選項。
購買完整的Iron Suite,即可獲得五個Iron Software程式庫的授權,只需支付兩個IronXL程式庫授權的價格!
謝謝閱讀!
常見問題
如何在C#中不使用Interop剖析CSV文件?
IronXL允許您在C#中剖析CSV文件而不使用Interop,您可以將CSV文件載入到WorkBook物件中並直接操作,僅需幾行程式碼即可將其轉換為其他格式如XLSX或XLS。
在Visual Studio中安裝IronXL程式庫需要哪些步驟?
要在Visual Studio中安裝IronXL程式庫,打開NuGet封裝管理器UI,搜尋'IronXL'並安裝。或者,您可以使用Visual Studio命令列,在封裝管理器主控臺中運行Install-Package IronXL.Excel命令。
如何在C#中將CSV文件轉換為Excel格式?
使用IronXL,您可以通過將CSV載入到WorkBook物件中,然後使用像SaveAsXlsx這樣的方法將其儲存為所需格式的文件,將CSV文件轉換為XLSX或XLS。
是否可以將TSV文件剖析並轉換為CSV格式?
可以,IronXL允許剖析TSV文件。將TSV文件載入到WorkBook物件中,然後使用SaveAsCsv方法將其轉換為CSV文件。
C# Excel程式庫提供了哪些資料操控功能?
IronXL提供了資料操控、圖表管理、儲存格格式化以及Excel加密相容性等功能。它支援凍結窗格、公式和條件格式等操作。
如何在C#中以程式方式管理Excel試算表格式?
IronXL使得管理多種試算表格式如XLSX、XLS和CSV變得可能。它提供了在這些格式之間轉換的方法,並能有效地在.NET應用程式中處理資料。
在購買之前,我可以嘗試使用C#的Excel程式庫嗎?
可以,IronXL提供免費30天試用,您可以從NuGet網站下載。這讓您在購買之前測試功能並確保它滿足您的需求。
IronXL在剖析和轉換CSV文件方面提供了哪些優勢?
IronXL簡化了剖析和轉換CSV文件的過程,只需最少的程式碼。它確保了高效的資料處理,並提供了廣泛的功能來增強C#應用程式中的Excel文件操作。




