跳至頁尾內容
USING IRONXL

如何在 C# 中讀取 CSV 文件

本文將探討如何使用IronXL程式庫建立一個C# CSV閱讀器。

IronXL - Excel程式庫

IronXL是一個強大的Excel程式庫,為C#開發人員提供建立、載入、閱讀和編輯多種格式的Excel試算表的能力。 IronXL專為.NET設計,優先考慮速度、準確性和易用性。 它允許儲存Excel檔案為不同格式,並將各種試算表格式載入到Excel中以有效地讀取資料。

IronXL支援具有不同檔案擴展名的Excel活頁簿格式,包括CSV和TSV、XLS和XLSX、XSLT和XLSM。 它與最新版本的.NET Framework相容,以及所有先前版本(至2.0)。IronXL可在多個平台上使用,包括Linux、MacOS、Azure、Docker和AWS。

如何在C#中使用IronXL建立一個CSV閱讀器?

先決條件

要將CSV檔案中的資料轉換為Excel檔案並在C#中閱讀,我們需要以下工具:

  1. Visual Studio: 是一個必不可少的整合開發環境(IDE),用於開發C# .NET應用程式。 它是開發C#應用程式的官方和推薦IDE,可以從微軟網站下載和安裝。 然而,如果開發者偏好,也可以使用支援C#環境的其他IDEs。
  2. 建立控制台應用程式:按步驟建立一個簡單的控制台應用程式。

    • 打開Visual Studio,然後點擊"建立專案"。

      在C#中讀取CSV檔案,圖 2:新專案視窗 新專案視窗

    • 從可用選項中選擇"控制台應用程式"。 確保選擇的語言是C#。

      在C#中讀取CSV檔案,圖 3:建立一個新的控制台應用程式 建立一個新的控制台應用程式

    • 接下來,將您的專案命名為任何您想要的名稱。

      在C#中讀取CSV檔案,圖 4:配置 配置

    • 專案配置的下一步是選擇.NET Framework。 最新可用版本是.NET 7.0,它在標準條款中支援。 然而,為了避免潛在錯誤,您可以選擇更穩定的.NET 6.0版本,因為微軟對其提供長期支援。 根據您的具體需求選擇適合的版本非常重要。
  3. IronXL - 它是專為處理Excel試算表而設計的.NET Excel程式庫。 在使用之前,必須先在您的C#應用程式中安裝它。 您可以從多個來源下載並安裝該套件:
    1. NuGet - .NET的套件管理器。 您可以直接從NuGet網站下載IronXL。
    2. Visual Studio NuGet包管理器:通過進入工具 > NuGet包管理器 > 管理方案包...打開包管理器。
    3. _直接從Iron網站下載IronXL .NET Excel DLL zip檔案_並將其作為專案參考新增到專案方案中。

新增IronXL Namespace

有了先決條件後,下一步是將main.cs檔案的源程式碼頂部:

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

打開現有的CSV檔案

IronXL提供了一種在C#中讀取CSV檔案的簡便方法。 首先,打開一個CSV檔案進行閱讀。 這是一種基於行列的檔案型別。 在這裡,WorkBook類和其LoadCSV方法一起使用來打開一個CSV檔案。程式碼如下:

// Load the CSV file and convert it to XLSX format.
var csv = WorkBook.LoadCSV("color_srgb.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Load the CSV file and convert it to XLSX format.
var csv = WorkBook.LoadCSV("color_srgb.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
' Load the CSV file and convert it to XLSX format.
Dim csv = WorkBook.LoadCSV("color_srgb.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
$vbLabelText   $csharpLabel

IronXL中的LoadCSV方法允許您打開CSV檔案並將其轉換為XLSX格式。 此方法提供了一些選項來指定CSV檔案中使用的列表分隔符。在本例中,使用的是預設分隔符,即逗號。 生成的檔案已打開,可以進一步使用IronXL的功能來讀取和操作Excel試算表。

    ![在C#中讀取CSV檔案,圖 5:CSV檔案](/static-assets/excel/blog/csharp-csvreader-tutorial/csharp-csvreader-tutorial-4.webp)

CSV檔案

從CSV閱讀器類中獲取工作表

在上一步,CSV檔案已使用IronXL作為Excel活頁簿打開。 現在,可以使用WorkSheet類從活頁簿中獲取預設工作表。 下面的範例演示瞭如何獲取工作表以讀取CSV資料:

// Retrieve the default worksheet from the loaded workbook.
WorkSheet ws = csv.DefaultWorkSheet;
// Retrieve the default worksheet from the loaded workbook.
WorkSheet ws = csv.DefaultWorkSheet;
' Retrieve the default worksheet from the loaded workbook.
Dim ws As WorkSheet = csv.DefaultWorkSheet
$vbLabelText   $csharpLabel

要獲取有關處理Excel工作表的更多資訊,您可以存取此程式碼範例頁面

使用C# DataTable讀取CSV資料

一旦CSV成功載入,資料已作為工作表可用,那麼在C# DataTable中從CSV檔案讀取資料就非常容易了。

將工作表轉換為DataTable

首先,建立一個DataTable實例,然後使用ToDataTable方法將工作表資料轉換為表格。 以下程式碼有助於完成此任務:

// Convert the worksheet data to a DataTable.
DataTable dt = ws.ToDataTable(true);
// Convert the worksheet data to a DataTable.
DataTable dt = ws.ToDataTable(true);
' Convert the worksheet data to a DataTable.
Dim dt As DataTable = ws.ToDataTable(True)
$vbLabelText   $csharpLabel

開始讀取CSV資料

現在,通過DataTable實例遍歷所有記錄。 資料以行和列的形式接收。 首先,然後通過每個列來獲取其值。 要獲取包括標題行在內的所有記錄,請使用以下程式碼片段:

// Iterate over each row in the DataTable.
foreach (DataRow row in dt.Rows)
{
    // Iterate over each column in the current row.
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        // Print each column value in the current row.
        Console.Write(row[i] + "  ");
    }
    // Move to the next line after printing all columns of the current row.
    Console.WriteLine();
}
// Iterate over each row in the DataTable.
foreach (DataRow row in dt.Rows)
{
    // Iterate over each column in the current row.
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        // Print each column value in the current row.
        Console.Write(row[i] + "  ");
    }
    // Move to the next line after printing all columns of the current row.
    Console.WriteLine();
}
' Iterate over each row in the DataTable.
For Each row As DataRow In dt.Rows
	' Iterate over each column in the current row.
	For i As Integer = 0 To dt.Columns.Count - 1
		' Print each column value in the current row.
		Console.Write(row(i) & "  ")
	Next i
	' Move to the next line after printing all columns of the current row.
	Console.WriteLine()
Next row
$vbLabelText   $csharpLabel

在上述程式碼中,使用了foreach迴圈從行集合中獲取單個記錄。 然後在巢狀迴圈中,計算出列數,最後將每行的資料列印到螢幕上。 輸出格式類似於CSV文件。

    ![在C#中讀取CSV檔案,圖 6:輸出](/static-assets/excel/blog/csharp-csvreader-tutorial/csharp-csvreader-tutorial-5.webp)

輸出

總結

本文展示了如何在C#中使用IronXL程式庫建立一個CSV閱讀器。 IronXL支援Excel試算表中的CSV格式,使CSV檔案載入變得簡單。 DataTable物件用於建立一個優雅的CSV閱讀器並格式化輸出以符合原始檔案。

IronXL還提供不同檔案格式之間的便捷轉換,並允許從頭開始建立Excel檔案,而不需要安裝Interop和Microsoft Excel。 它也與C# DataSetDataTable 相容,在不依賴第三方應用的情況下為開發人員提供了靈活性來進行資料轉換。 憑藉其強大的功能,IronXL對於C#開發人員來說是一個有價值的工具,可以有效地處理Excel試算表和CSV資料。

IronXL對開發是免費的。 然而,對於商業使用,您需要購買其授權,從$999開始。 您也可以使用其免費試用來測試其編譯的 .dll 與您的專案在生產模式中的相容性。

常見問題

如何在 C# 中建立一個不使用 Interop 的 CSV 讀取器?

您可以通過使用 IronXL 程式庫在 C# 中建立一個不使用 Interop 的 CSV 讀取器。首先,通過 NuGet 安裝 IronXL 或從 IronXL 網站下載 .NET Excel DLL。在您的程式碼中新增 IronXL 命名空間,並使用 WorkBook.LoadCSV 方法載入 CSV 文件,讓您可以將其作為 Excel 工作簿進行操作。

using IronXL 在 C# 中進行 CSV 操作有什麼好處?

IronXL 提供了一種強大且靈活的解決方案,用於在 C# 中處理 CSV 操作。它允許開發者載入、閱讀和將 CSV 文件轉換為 Excel 格式,而不需要 Microsoft Excel 或 Interop,這使其與 Linux、MacOS 和 Azure、AWS 等各種平台相容。

如何使用 IronXL 將 CSV 資料轉換為 Excel 格式?

要使用 IronXL 將 CSV 資料轉換為 Excel 格式,請使用 WorkBook.LoadCSV 方法載入 CSV 文件,然後使用 WorkBook.SaveAs 方法保存,指定所需的 Excel 格式如 XLSX。

是否可以使用 IronXL 在 C# 中將 CSV 資料讀取到 DataTable 中?

是的,您可以使用 IronXL 在 C# 中將 CSV 資料讀取到 DataTable 中。將 CSV 作為工作簿載入,存取預設工作表,並使用 Range.ToDataTable 方法將工作表資料轉換為 DataTable 以便於操作和迭代。

IronXL 程式庫與哪些平台相容?

IronXL 程式庫與多個平台相容,包括 Windows、Linux、MacOS、Azure、Docker 和 AWS。這種跨平台支持使其成為開發者在多樣環境中工作的多功能選擇。

IronXL 可以用於商業項目嗎?

是的,IronXL 可以用於商業項目。雖然它提供免費的開發和測試試用,但生產使用需要商業授權。此授權提供對全部功能和支持的存取。

IronXL 如何增強 C# 應用程式中的 CSV 資料操作?

IronXL 通過允許開發者載入和編輯 CSV 文件而不依賴於 Microsoft Excel,以增強 C# 應用程式中的 CSV 資料操作。它提供了在 CSV 與 Excel 格式之間轉換的方法,使資料處理更加靈活和高效。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

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