跳過到頁腳內容
使用 IRONXL

C# CSV 解析器(分步)教程

你是否曾經遇到過這樣的情況:在 .NET 中,為了完成某些重要任務,需要解析 CSV 文件並將其轉換為 XLSX 文件,或者將 XLSX 文件轉換為 CSV 文件,但卻苦於找不到無需編寫大量代碼就能實現的方法?

有很多CSV庫可以解決這個問題。 不過,本部落格將使用IronXL C# Excel 庫,僅用兩行程式碼即可完成這些任務。

首先,您只需要 Visual Studio,然後按照下面的詳細安裝說明進行操作。

1. 在 Visual Studio 中建立新項目

開啟 Visual Studio 編輯器。

在 Visual Studio 中,前往"檔案"選單。 選擇"新建專案",然後選擇"控制台應用程式"。

輸入項目名稱並選擇項目地點。 然後,點擊"建立"按鈕建立項目。 選擇所需的 .NET Framework 版本,如下圖所示:

C# CSV 解析器(逐步教學),圖 1:建立一個新的 C#。 .NET 控制台應用程式建立一個新的 C# 物件。 .NET 主控台應用程式

program.cs檔案將會打開,以便您可以輸入邏輯並建立/執行應用程式。

2. 安裝 IronXL C# 庫

IronXL 庫可以透過多種不同的方式下載和安裝。 今天,我們將重點討論其中兩項:

  • 使用 Visual Studio NuGet 套件管理員
  • 使用 Visual Studio 命令列

2.1. 使用 Visual Studio NuGet 套件管理器

Visual Studio 中提供了 NuGet 套件管理器 UI,可以直接將套件安裝到專案中。 下面截圖顯示如何開啟它。

C# CSV 解析器(逐步教學),圖 2:使用 Visual Studio NuGet 套件管理器 GUI 安裝 IronXL

套件管理器使用者介面提供了一個瀏覽功能,其中顯示了 NuGet 網站上提供的套件庫清單。輸入關鍵字"IronXL"(如下圖),即可找到 IronXL 程式包。

C# CSV 解析器(逐步教學),圖 3:在 NuGet 套件管理器中,透過在"瀏覽"部分搜尋來找到 IronXL 庫。

選擇IronXL.Excel程式包,然後按一下"安裝"按鈕將其新增至專案。

2.2. 使用 Visual Studio 命令列

在 Visual Studio 功能表中,前往"工具" > "NuGet 套件管理器" >按一下"套件管理器控制台"

C# CSV 解析器(逐步教學),圖 4:從 Visual Studio 的"工具"功能表存取 NuGet 套件管理器控制台

程式包管理器控制台將顯示在螢幕底部。 只需輸入以下命令,然後按下回車鍵,即可安裝 IronXL。

Install-Package IronXL.Excel

C# CSV 解析器(逐步教學),圖 5:透過命令列安裝 IronXL

3. 解析 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
            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
            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

	Friend Class Program
		Shared Sub Main(ByVal 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
			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 record
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

但使用 IronXL,只需幾行程式碼即可實現這一點。

使用 IronXL,您可以解析來自 XLSX、XLS、TSV 等格式的 CSV 檔案。 在本教程中,我們將探討以下幾種轉換:

  1. 從 XLSX 檔案解析 CSV 文件
  2. 從 XLS 檔案解析 CSV 文件
  3. 從 TSV 檔案解析 CSV 文件

3.1. 從 XLSX 檔案解析 CSV 文件

開啟 Microsoft Excel 並建立一個新的 XLSX 檔案。在檔案的行和列中填入一些模擬資料。 下圖顯示了本教程中所有轉換所使用的檔案。

C# CSV 解析器(逐步教學),圖 6:範例 Excel 資料範例 Excel 數據

文件準備就緒後,編寫以下範例程式碼並執行程式。

using IronXL;

class Program
{
    static void Main()
    {
        // Load the XLSX file into a WorkBook object
        WorkBook wb = WorkBook.Load("test.xlsx");
        // Save the WorkBook as a CSV file
        wb.SaveAsCsv("Parsed CSV.csv");
    }
}
using IronXL;

class Program
{
    static void Main()
    {
        // Load the XLSX file into a WorkBook object
        WorkBook wb = WorkBook.Load("test.xlsx");
        // Save the WorkBook as a CSV file
        wb.SaveAsCsv("Parsed CSV.csv");
    }
}
Imports IronXL

Friend Class Program
	Shared Sub Main()
		' Load the XLSX file into a WorkBook object
		Dim wb As WorkBook = WorkBook.Load("test.xlsx")
		' Save the WorkBook as a CSV file
		wb.SaveAsCsv("Parsed CSV.csv")
	End Sub
End Class
$vbLabelText   $csharpLabel

執行完成後,將建立一個名為Parsed CSV.csv的新檔案。 您可以使用任何您喜歡的編輯器或閱讀器讀取 CSV 檔案。下圖顯示了上述命令的輸出結果—我們產生的 CSV 資料。 在輸出檔中,雙引號表示粗體值。

C# CSV 解析器(逐步教學),圖 7:對範例 Excel 工作簿呼叫 WorkBook.SaveAsCsv 方法的結果

3.2. 從 XLS 檔案解析 CSV 文件

在這個例子中,我們將看到如何將 XLS 檔案轉換為 CSV 格式。

首先,我們建立一個範例 XLS 文件,然後將其轉換為 CSV 格式。

C# CSV 解析器(逐步教學),圖 8:範例 XLS文件

接下來,我們將執行以下程式碼區塊,將範例 XLS 檔案轉換為 CSV 檔案。

using IronXL;

class Program
{
    static void Main()
    {
        // Load the XLS file into a WorkBook object
        WorkBook wb = WorkBook.Load("XLS.xls");
        // Save the WorkBook as a CSV file
        wb.SaveAsCsv("Example2.csv");
    }
}
using IronXL;

class Program
{
    static void Main()
    {
        // Load the XLS file into a WorkBook object
        WorkBook wb = WorkBook.Load("XLS.xls");
        // Save the WorkBook as a CSV file
        wb.SaveAsCsv("Example2.csv");
    }
}
Imports IronXL

Friend Class Program
	Shared Sub Main()
		' Load the XLS file into a WorkBook object
		Dim wb As WorkBook = WorkBook.Load("XLS.xls")
		' Save the WorkBook as a CSV file
		wb.SaveAsCsv("Example2.csv")
	End Sub
End Class
$vbLabelText   $csharpLabel

上述程式碼執行完畢後,您將獲得一個新產生的 CSV 檔案。

C# CSV 解析器(逐步教學),圖 9:使用上述程式碼儲存後產生的 CSV文件

3.3. 從 TSV 檔案解析 CSV 文件

電子表格應用程式經常使用 TSV 檔案(製表符分隔值檔案)在資料庫之間傳輸資料。 它保存一個資料表,資料列之間用製表符分隔,每筆記錄位於不同的行上。

IronXL 提供了一個 CSV 解析器,用於將 TSV 格式的文件解析為 CSV 文件,以便更好地進行資料管理。

讓我們從例子開始。

C# CSV 解析器(逐步教學),圖 10:TSV 電子表格範例

using IronXL;

class Program
{
    static void Main()
    {
        // Load the TSV file into a WorkBook object
        WorkBook wb = WorkBook.Load("TSV.tsv");
        // Save the WorkBook as a CSV file
        wb.SaveAsCsv("Example3.csv");
    }
}
using IronXL;

class Program
{
    static void Main()
    {
        // Load the TSV file into a WorkBook object
        WorkBook wb = WorkBook.Load("TSV.tsv");
        // Save the WorkBook as a CSV file
        wb.SaveAsCsv("Example3.csv");
    }
}
Imports IronXL

Friend Class Program
	Shared Sub Main()
		' Load the TSV file into a WorkBook object
		Dim wb As WorkBook = WorkBook.Load("TSV.tsv")
		' Save the WorkBook as a CSV file
		wb.SaveAsCsv("Example3.csv")
	End Sub
End Class
$vbLabelText   $csharpLabel

以下是CSV格式的輸出結果。 C# CSV 解析器(逐步教學),圖 11:輸出的 CSV文件

4.結論

本教學使用 IronXL 在 C# 中將各種檔案格式解析為 CSV 檔案。

此外,IronXL 庫還提供以下功能:

查看 IronXL 的功能程式碼範例文件內容,以了解更多關於 IronXL 工作原理的資訊。 下載 IronXL ,即可使用試用許可證金鑰免費試用 30 天。 請造訪授權頁面,以了解有關授權條款和條件的更多資訊。

購買完整的Iron Suite ,即可用兩個 IronXL 庫許可證的價格獲得所有五個 Iron Software 庫的許可證!

感謝閱讀!

常見問題解答

不使用 Interop 如何在 C# 中解析 CSV 檔案?

IronXL 可讓您在不使用 Interop 的情況下,以 C# 解析 CSV 檔案。您可以將 CSV 檔案載入 WorkBook 物件中,並直接對其進行操作,僅需幾行程式碼即可將其轉換為 XLSX 或 XLS 等其他格式。

在 Visual Studio 中安裝 IronXL 函式庫需要哪些步驟?

若要在 Visual Studio 中安裝 IronXL 函式庫,請開啟 NuGet Package Manager UI,搜尋「IronXL」,然後進行安裝。另外,您也可以使用 Visual Studio Command-Line,並在套件管理員控制台執行 Install-Package IronXL.Excel 指令。

如何在 C# 中將 CSV 檔案轉換為 Excel 格式?

使用 IronXL,您可以將 CSV 檔案轉換為 Excel 格式,例如 XLSX 或 XLS,方法是將 CSV 載入 WorkBook 物件,並使用 SaveAsXlsx 等方法將其儲存為所需格式。

是否可以用 C# 解析 TSV 檔案並將其轉換為 CSV?

是的,IronXL 允許解析 TSV 檔案。將 TSV 檔案載入 WorkBook 物件,並使用 SaveAsCsv 方法將其轉換為 CSV 檔案。

C# Excel 函式庫提供哪些資料處理功能?

IronXL.Excel 提供的功能包括資料處理、圖表管理、單元格格式化,以及與 Excel 加密的相容性。它支援凍結面板、公式和條件格式化等操作。

如何用 C# 程式化管理 Excel 試算表格式?

IronXL 可以管理不同的試算表格式,例如 XLSX、XLS 和 CSV。它提供在這些格式之間轉換的方法,並在 .NET 應用程式中有效率地處理資料。

在購買之前,我可以試用 C# 的 Excel 函式庫嗎?

是的,IronXL 提供 30 天的免費試用版,可從 NuGet 網站下載。這可讓您在購買前測試其功能,並確保它符合您的需求。

IronXL 在解析和轉換 CSV 檔案方面有哪些優點?

IronXL 用最少的代碼簡化了解析和轉換 CSV 檔案的過程。它可確保有效率的資料處理,並提供廣泛的功能,增強 C# 應用程式中的 Excel 檔案操作。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。