跳過到頁腳內容
使用 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。

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

先決條件

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

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

    接下來,你可以隨意為你的專案命名。

    [如何在 C# 中讀取 CSV 文件,圖 4:配置](/static-assets/excel/blog/csharp-csvreader-tutorial/csharp-csvreader-tutorial-3.webp)
    **配置**

    專案配置的下一步是選擇 .NET Framework。 最新版本為 .NET 7.0,該版本在標準期限內支援。 但是,為了避免任何潛在的錯誤,您可以選擇更穩定的 .NET 6.0 版本,因為微軟為其提供長期支援。 根據您的特定需求選擇合適的版本非常重要。

  2. IronXL - 它是專為處理 Excel 電子表格而設計的 .NET Excel 庫。 必須先將其安裝到您的 C# 應用程式中才能使用。 您可以從多個來源下載並安裝該軟體包:
    1. NuGet - .NET 的套件管理器。 您可以直接從NuGet 網站下載 IronXL。
    2. Visual Studio NuGet 套件管理器:依序點選"工具" > "NuGet 套件管理器" > "管理解決方案的套件",開啟套件管理器。
    3. 直接從 Iron 網站下載 IronXL .NET Excel DLL zip 文件,並將其作為專案參考新增至專案解決方案。

增加 IronXL 命名空間

滿足所有前提條件後,下一步是在main.cs檔案的原始程式碼頂部新增IronXL命名空間:

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 文件 CSV File

從 CSV 讀取器類別取得工作表

在上一個步驟中,使用 IronXL 將 CSV 檔案作為 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實例,然後使用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循環,從一組行中取得單一記錄。 然後,在一個嵌套的 for 循環中,統計列數,最後,將每一行的資料列印到螢幕上。 輸出格式與 CSV 檔案類似。

如何在 C# 中讀取 CSV 文件,圖 6:輸出 Output

摘要

本文示範如何使用 IronXL 庫在 C# 中建立 CSV 讀取器。 IronXL 可以輕鬆載入 CSV 文件,因為它支援 Excel 電子表格中的 CSV 格式。 DataTable物件用於建立優雅的 CSV 讀取器,並將輸出格式化為與原始檔案相符。

IronXL 還提供不同文件格式之間的便利轉換,並允許從頭開始建立 Excel 文件,而無需安裝 Interop 和 Microsoft Excel。 它還相容於 C# DataSetDataTable ,使開發人員能夠靈活地進行資料互轉換,而無需依賴第三方應用程式。 IronXL 功能強大,是 C# 開發人員處理 Excel 電子表格和高效處理 CSV 資料的寶貴工具。

IronXL 可供開發免費使用。 但是,若要用於商業用途,您需要購買其許可證,起價為$799 。 您也可以使用其免費試用版來測試其編譯後的 .dll 檔案在生產模式下與您的專案的兼容性。

常見問題解答

不使用 Interop,如何在 C# 中建立 CSV 閱讀器?

您可以利用 IronXL 函式庫,在不使用 Interop 的情況下以 C# 建立 CSV 閱讀器。首先,透過 NuGet 安裝 IronXL 或從 IronXL 網站下載 .NET Excel DLL。在您的程式碼中加入 IronXL 命名空間,並使用 WorkBook.LoadCSV 方法載入 CSV 檔案,讓您可以將它當成 Excel 工作簿來操作。

在 C# 中使用 IronXL 進行 CSV 操作有哪些優點?

IronXL 提供功能強大且靈活的解決方案,可在 C# 中處理 CSV 作業。它讓開發人員無需 Microsoft Excel 或 Interop 即可載入、讀取 CSV 檔案並將其轉換為 Excel 格式,使其相容於 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 增強了 C# 應用程式中的 CSV 資料處理功能,讓開發人員可以載入和編輯 CSV 檔案,而無需依賴 Microsoft Excel。它提供了 CSV 和 Excel 格式之間的轉換方法,使資料處理更靈活、更有效率。

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