跳過到頁腳內容
使用 IRONXL

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

IronXL只需兩行程式碼即可在 C# 中解析 CSV 檔案並將其轉換為 Excel 格式。 本教學課程示範如何使用 IronXL 庫的簡單 API 將 XLSX、XLS 和 TSV 檔案轉換為 CSV 格式,從而無需複雜的手動解析程式碼。 該程式庫在內部處理文件格式轉換的所有複雜細節,因此非常適合需要快速、可靠的 CSV 解析而無需編寫大量程式碼的開發人員。

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

有很多CSV庫可以解決這個問題。 不過,本教學將使用IronXL C# Excel 庫,只需兩行程式碼即可完成這些任務。 與需要手動解析分隔符號和處理特殊情況的傳統方法不同,IronXL 提供了一個強大且經過測試的解決方案,可在包括 Windows、Linux 和 macOS 在內的不同平台上運行

首先,你只需要 Visual Studio 即可。 請依照以下說明進行詳細安裝步驟。 本教學課程專為具備基本 C# 知識、希望在不使用互通依賴項的情況下處理 Excel 檔案的開發人員而設計。

如何在 Visual Studio 中建立新專案?

開啟 Visual Studio 編輯器。

在 Visual Studio 中,前往"檔案"選單。 選擇"新建專案",然後選擇"控制台應用程式"。 這樣就創建了一個簡單的專案結構,非常適合學習如何建立和操作 Excel 檔案

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

圖 1:在 Visual Studio 中使用 .NET Framework 4.7.2 設定新的 C# 控制台應用程式 (.NET Framework) 專案。此 Visual Studio 新專案設定對話方塊顯示了專案名稱為"ConsoleApp1"的C# 控制台應用程式 (.NET Framework) 的設定、位置路徑和已選取的 .NET Framework 4.7.2。

將開啟 program.cs 文件,以便您可以輸入邏輯並建立/運行應用程式。 在這裡,我們將使用 IronXL 簡單易用的 API 來添加我們的 CSV 解析程式碼。

如何安裝 IronXL C# 庫?

IronXL 庫可以透過多種不同的方式下載和安裝。 今天,我們將重點放在職業發展環境中常用的兩種方法:

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

兩種方法同樣有效,你的選擇取決於你喜歡圖形介面還是命令列工具。 有關不同環境下的詳細安裝指南,請參閱官方文件

我應該使用 Visual Studio NuGet 套件管理器嗎?

Visual Studio 中提供了 NuGet 套件管理器 UI,可以直接將套件安裝到專案中。 對於喜歡視覺化介面並希望在安裝前查看軟體包詳細資訊的開發人員來說,這種方法特別有用。 下面的截圖顯示如何開啟它。

Visual Studio 介面顯示"工具"功能表已展開,"NuGet 套件管理器"選項已高亮顯示,且二級選單顯示"管理解決方案的 NuGet 套件"已選取。若要存取 Visual Studio 中的 NuGet 套件管理器,請導覽至"工具">"NuGet 套件管理器">"管理解決方案的 NuGet 套件"。

套件管理器使用者介面提供了一個瀏覽功能,用於顯示 NuGet 網站上可用的套件庫清單。輸入"IronXL"(如下圖)即可找到 IronXL 套件。 您也可以探索 IronXL 提供的相關 Excel 處理功能

Visual Studio 的 NuGet 套件管理器介面顯示了 IronXL.Excel 套件的搜尋結果,其中已選擇版本 2022.9.9454 安裝到名為"Create PDF"的 C# 專案中。 Visual Studio 中的 NuGet 套件管理器顯示了 IronXL.Excel 程式庫,該程式庫使開發人員能夠在 .NET 應用程式中讀取、產生和編輯 Excel 檔案。 軟體包顯示下載量已達 25 萬次,版本為 2022.9.9454,可供安裝。

選擇 IronXL.Excel 套件,然後按一下"安裝"按鈕將其新增至專案。 安裝過程將自動處理所有依賴項,並配置您的專案以進行Excel 文件操作

何時應該使用 Visual Studio 命令列?

在 Visual Studio 功能表中,前往"工具" > "NuGet 套件管理器" >按一下"套件管理器控制台" 。 對於熟悉命令列介面或需要在建置腳本中自動化安裝過程的開發人員來說,這種方法是更優的選擇。

Visual Studio 介面顯示"工具"功能表已展開,"NuGet 套件管理器"選項已高亮顯示,底部開啟了"套件管理器控制台"視窗。在 Visual Studio 中開啟 NuGet 套件管理器控制台以安裝 CSV 解析庫。

程式包管理器控制台將顯示在螢幕底部。 輸入以下指令並按下回車鍵。 將安裝IronXL。 當您需要安裝特定版本或使用AzureAWS 環境的部署腳本時,此方法特別有用。

Install-Package IronXL.Excel

Visual Studio 中的套件管理器控制台顯示 IronXL.Excel NuGet 套件的安裝過程,並顯示下載成功的確認訊息。套件管理器控制台顯示 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
$vbLabelText   $csharpLabel

但使用 IronXL,只需幾行程式碼即可實現此功能,它還內建了錯誤處理功能,並支援各種檔案格式。

使用 IronXL,您可以解析來自 XLSX、XLS、TSV 等格式的 CSV 檔案。 該程式庫還支援在 ASP.NET 應用程式和Blazor 應用程式中讀取 Excel 檔案。 在本教程中,我們將探討以下幾種轉換:

  1. 從 XLSX 檔案解析 CSV 文件
  2. 從 XLS 檔案解析 CSV 文件
  3. 從 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
$vbLabelText   $csharpLabel

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

圖 7:使用 WorkBook .SaveAsCsv 方法產生的 CSV 輸出,以逗號分隔格式顯示轉換後的 Excel 資料。

如何將 XLS 檔案轉換為 CSV 檔案?

在這個例子中,我們將看到如何將 XLS 檔案轉換為 CSV 格式。 這個過程與 XLSX 轉換相同,這反映了 IronXL 在處理不同 Excel 檔案格式方面的多功能性。

首先,我們建立一個範例 XLS 文件,然後將其轉換為 CSV 格式。 請注意,XLS 是較舊的 Excel 格式,但 IronXL 可以無縫地處理它以及現代格式:

圖 8為一個範例 Excel 文件,展示了庫存清單,包含"物品"、"數量"、"價格"和"總計"四列,列出了斧頭、筆、充電器、耳機和鋸子等各種工具及其數量和計算出的總計,總計為 1239。此範例 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
$vbLabelText   $csharpLabel

上述程式碼執行完畢後,您將獲得一個新產生的 CSV 檔案。對於更複雜的場景,您可能需要在匯出之前選擇特定範圍對資料進行排序

! WordPad 視窗顯示一個 CSV 文件,其中包含商品、數量、價格和總計,包括 AXE、鋼筆、充電器、耳機和鋸子的條目。範例 CSV 檔案在 WordPad 中打開,顯示格式正確的逗號分隔數據,帶有標題和多個產品條目。

如何從 TSV 格式解析 CSV 檔案?

電子表格應用程式經常使用 TSV 檔案(製表符分隔值檔案)在資料庫之間傳輸資料。 它會保存一個資料表,資料列之間用製表符分隔,每筆記錄佔一行。當資料中包含可能幹擾 CSV 解析的逗號時,TSV 檔案尤其有用。

IronXL 提供了一個 CSV 解析器,用於將 TSV 格式的文件解析為 CSV 文件,以便更好地進行資料管理。 轉換過程簡單直接,並能始終保持資料完整性。

讓我們從例子開始。 首先,我們將建立一個包含學生資料的TSV檔案:

Microsoft Word 文檔,顯示一個包含學生資料的表格,資料包括姓名、電子郵件地址、學號 (R-NO) 和字母等級,格式為製表符分隔值 (TSV)。範例:在 Microsoft Word 中顯示的製表符分隔的學生數據,展示了 TSV 文件的結構,其中包含姓名、電子郵件地址、學號和等級列。

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

以下是CSV格式的輸出結果。 請注意 IronXL 是如何在保持資料結構不變的情況下,將製表符分隔的值正確轉換為逗號分隔的值的:

! WordPad 文件顯示了一個 CSV 文件,其中包含學生數據,包括姓名、電子郵件、學號和成績,以逗號分隔。範例 CSV 檔案在 WordPad 中打開,顯示學生記錄,欄位包括姓名、電子郵件、學號和成績,以逗號分隔。

使用 IronXL 進行 CSV 解析的主要優勢是什麼?

本教學課程示範如何使用 IronXL 在 C# 中將各種檔案格式解析為 CSV 檔案。 該程式庫為所有文件格式提供一致的 API,無需更改程式碼結構即可輕鬆處理不同的 Excel 版本和格式。

此外,IronXL 庫還提供以下功能,使其成為 Excel 資料處理的絕佳選擇:

IronXL 在效能優化方面也表現出色。 根據最近的效能改進,該庫現在處理文件的速度提高了 40 倍,同時使用的記憶體也顯著減少,使其適用於大規模資料處理任務。 該程式庫可在Docker 容器Linux 系統macOS 環境中無縫運行,提供真正的跨平台相容性。

對於企業環境,IronXL 提供強大的安全功能,並符合業界標準。 該程式庫同時支援VB.NET和 C#,使其能夠靈活地應用於不同的開發團隊。 處理大型檔案時,請注意檔案大小限制和可用的最佳化策略。

查看 IronXL 的功能程式碼範例文檔,以了解有關 IronXL 工作原理的更多資訊。 您可以探索特定的用例,例如使用 .NET MAUI進行行動開發,或與 DataTables 整合進行資料庫操作。 下載 IronXL ,即可使用試用許可證金鑰免費試用 30 天。 對於生產環境,您需要套用一個許可證金鑰,該金鑰可以在 Web 應用程式的web.config 檔案中進行設定。 訪問許可頁面,了解有關許可條款和條件的更多信息,包括許可延期升級選項。

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

感謝閱讀!

常見問題解答

我怎樣才能在 C# 中不使用 Interop 解析 CSV 文件?

IronXL 允許在 C# 中解析 CSV 文件而不使用 Interop。您可以將 CSV 文件加載到 WorkBook 對象中,直接進行操作,通過少量代碼將其轉換為其他格式,如 XLSX 或 XLS。

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

要在 Visual Studio 中安裝 IronXL 庫,打開 NuGet 包管理器用戶界面,搜索 "IronXL" 並安裝它。或者,您可以使用 Visual Studio 命令行,在包管理器控制台中運行命令 Install-Package IronXL.Excel

如何在 C# 中將 CSV 文件轉換為 Excel 格式?

使用 IronXL,您可以將 CSV 文件轉換為 XLSX 或 XLS 等 Excel 格式,方法是將 CSV 加載到 WorkBook 對象中,並使用 SaveAsXlsx 方法保存為所需格式。

是否可以在 C# 中解析 TSV 文件並將其轉換為 CSV?

可以,IronXL 允許解析 TSV 文件。將 TSV 文件加載到 WorkBook 對象中,並使用 SaveAsCsv 方法將其轉換為 CSV 文件。

C# 的 Excel 庫提供哪些功能來進行數據操作?

IronXL 提供了數據操作、圖表管理、單元格格式化及 Excel 加密的兼容性支持。它支持凍結窗口、公式和條件格式等操作。

如何在 C# 中編程管理 Excel 電子表格格式?

IronXL 支持不同的電子表格格式管理,如 XLSX、XLS 和 CSV。它提供在這些格式間進行轉換的方法,以及在 .NET 應用程序中高效處理數據的功能。

在購買之前,我可以嘗試一個 C# 的 Excel 庫嗎?

可以,IronXL 提供可從 NuGet 網站下載的免費 30 天試用版。這讓您可以測試其功能並確保它滿足您的需求再購買。

IronXL 在解析和轉換 CSV 文件方面提供了哪些好處?

IronXL 以最少的代碼簡化了解析和轉換 CSV 文件的過程。它確保了高效的數據處理,並提供豐富的功能來增強 C# 應用程序中的 Excel 文件操作。

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

鋼鐵支援團隊

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