跳過到頁腳內容
使用 IRONXL

C# CSV 函式庫:用於讀取、寫入和轉換 Excel 的 IronXL.Excel

在 C# 中處理 CSV 檔案通常不僅僅是簡單的讀取和寫入。 開發人員需要可靠的 CSV 文件處理、流暢的資料匯入/匯出以及與電子表格工作流程的輕鬆整合。 雖然像 CsvHelper 這樣的免費庫涵蓋了基本的 CSV 操作,但當您需要 Excel 工作簿支援、高效能或對行、列和資料類型的一致處理時,它們有時會顯得力不從心。

IronXL透過提供一個能夠無縫處理 CSV 和 Excel 格式的單一 .NET 程式庫來解決這些難題,而無需 Microsoft Office。它提供了強大的 CSV 讀寫功能、自訂類別物件映射功能以及逗號分隔值和 Excel 之間的轉換功能。 所有這些都以高效能、低記憶體的工作流程實現,適用於桌面和 Web 應用程式。

如何開始使用 IronXL?

透過NuGet 套件管理器安裝 IronXL 只需幾秒鐘。 在 Visual Studio 中開啟程式包管理器控制台並執行:

Install-Package IronXL.Excel

安裝完成後,將 IronXL 命名空間新增至您的 C# 檔案:

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

IronXL 可在 Windows、Linux 和 macOS 環境下執行,支援 .NET Framework 4.6.2+ 和 .NET Core/5/6/7/8+。 該程式庫無需依賴 Microsoft Office 即可獨立運行,因此非常適合伺服器部署和雲端應用程式。 有關詳細的安裝說明,請造訪IronXL 安裝指南

如何使用 IronXL 讀取 CSV 檔案?

IronXL 支援輕鬆讀取 CSV 文件,整個過程遵循直觀的模式。 該程式庫會自動處理編碼偵測和分隔符號識別等常見挑戰,這些問題是開發人員在解析 CSV 資料時經常遇到的

// Load a CSV file into a WorkBook
WorkBook workBook = WorkBook.Load("sales_data.csv");
// Access the imported worksheet
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Read specific cell values
string customerName = workSheet["A2"].StringValue;
decimal orderAmount = workSheet["B2"].DecimalValue;
// iterating from row 1 to skip the header row
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
    var row = workSheet.Rows[i];
    Console.WriteLine($"Customer: {row.Columns[0].Value}, Amount: {row.Columns[1].Value}");
}
// Load a CSV file into a WorkBook
WorkBook workBook = WorkBook.Load("sales_data.csv");
// Access the imported worksheet
WorkSheet workSheet = workBook.DefaultWorkSheet;
// Read specific cell values
string customerName = workSheet["A2"].StringValue;
decimal orderAmount = workSheet["B2"].DecimalValue;
// iterating from row 1 to skip the header row
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
    var row = workSheet.Rows[i];
    Console.WriteLine($"Customer: {row.Columns[0].Value}, Amount: {row.Columns[1].Value}");
}
' Load a CSV file into a WorkBook
Dim workBook As WorkBook = WorkBook.Load("sales_data.csv")
' Access the imported worksheet
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
' Read specific cell values
Dim customerName As String = workSheet("A2").StringValue
Dim orderAmount As Decimal = workSheet("B2").DecimalValue
' iterating from row 1 to skip the header row
For i As Integer = 1 To workSheet.Rows.Count() - 1
    Dim row = workSheet.Rows(i)
    Console.WriteLine($"Customer: {row.Columns(0).Value}, Amount: {row.Columns(1).Value}")
Next i
$vbLabelText   $csharpLabel

這段程式碼將 CSV 檔案載入到 WorkBook 物件中,從而提供完整的電子表格功能。 DefaultWorkSheet 屬性可直接存取 CSV 資料。 可以使用熟悉的 Excel 表示法(例如"A2")存取單一儲存格,內建的類型轉換方法(StringValue、DecimalValue、IntValue)可確保正確的資料處理。 for 迴圈示範了行迭代,將每一行視為單元格的集合。 我們使用了一個循環,它會自動跳過第一行,因為它是標題行; 但是,如果您想將標題保留在輸出中,只需使用:

foreach (var row in workSheet.Rows)
{
    Console.WriteLine($"{row.Columns[0].Value}, {row.Columns[1].Value}");
}
foreach (var row in workSheet.Rows)
{
    Console.WriteLine($"{row.Columns[0].Value}, {row.Columns[1].Value}");
}
For Each row In workSheet.Rows
    Console.WriteLine($"{row.Columns(0).Value}, {row.Columns(1).Value}")
Next
$vbLabelText   $csharpLabel

對於更複雜的場景,請查閱完整的閱讀教學

輸出

如何使用 C# CSV 庫讀寫檔案:圖 1 - 讀取 CSV 檔案輸出

對於進階場景,開發人員可以透過遍歷每一行並將單元格值指派給物件屬性,將 CSV 行對應到自訂類別物件。 這種方法為在 C# 中處理結構化資料提供了一種簡潔的方式。

如何在C#中寫入CSV檔案?

使用 IronXL 建立 CSV 檔案支援多種方法,從建立新的電子表格到轉換現有資料結構。 這種靈活性使其成為資料匯出場景的理想選擇:

// Create a new workbook
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("inventory");
// Add header row
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";
// Add data rows
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 100;
workSheet["C2"].Value = 19.99;
// Save as CSV
workBook.SaveAsCsv("inventory.csv");
// Create a new workbook
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("inventory");
// Add header row
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";
// Add data rows
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 100;
workSheet["C2"].Value = 19.99;
// Save as CSV
workBook.SaveAsCsv("inventory.csv");
' Create a new workbook
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("inventory")
' Add header row
workSheet("A1").Value = "Product"
workSheet("B1").Value = "Quantity"
workSheet("C1").Value = "Price"
' Add data rows
workSheet("A2").Value = "Widget"
workSheet("B2").Value = 100
workSheet("C2").Value = 19.99
' Save as CSV
workBook.SaveAsCsv("inventory.csv")
$vbLabelText   $csharpLabel

本範例從頭開始建立一個新的工作簿,並向其中填入資料。 SaveAsCsv() 方法將工作表匯出為 CSV 格式,自動處理正確的格式和分隔符號。 IronXL 在匯出過程中保留資料類型,確保數字保持數值形式,而不是將所有內容轉換為字串。 SaveAsCsv 方法支援在需要時使用自訂分隔符號。

輸出

如何使用 C# CSV 庫讀寫文件:圖 2 - 使用 IronXL 新建的 CSV 文件

對於現有數據,IronXL 可以直接轉換數據表:

DataTable dataTable = GetDataFromDatabase();
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("export");
workSheet.InsertDataTable(dataTable, "A1");
workBook.SaveAsCsv("export.csv");
DataTable dataTable = GetDataFromDatabase();
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("export");
workSheet.InsertDataTable(dataTable, "A1");
workBook.SaveAsCsv("export.csv");
Dim dataTable As DataTable = GetDataFromDatabase()
Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("export")
workSheet.InsertDataTable(dataTable, "A1")
workBook.SaveAsCsv("export.csv")
$vbLabelText   $csharpLabel

IronXL 能否在 CSV 與 Excel 格式之間進行轉換?

IronXL 的突出特點是 CSV 和 Excel 格式之間的無縫轉換。 此功能消除了處理不同文件類型時對單獨庫的需求,這是開發人員經常討論的需求:

// Convert CSV to Excel
WorkBook csvWorkBook = WorkBook.Load("data.csv");
csvWorkBook.SaveAs("data.xlsx");
// Convert Excel to CSV
WorkBook xlsxWorkBook = WorkBook.Load("report.xlsx");
xlsxWorkBook.SaveAsCsv("report.csv");
// Convert CSV to Excel
WorkBook csvWorkBook = WorkBook.Load("data.csv");
csvWorkBook.SaveAs("data.xlsx");
// Convert Excel to CSV
WorkBook xlsxWorkBook = WorkBook.Load("report.xlsx");
xlsxWorkBook.SaveAsCsv("report.csv");
' Convert CSV to Excel
Dim csvWorkBook As WorkBook = WorkBook.Load("data.csv")
csvWorkBook.SaveAs("data.xlsx")
' Convert Excel to CSV
Dim xlsxWorkBook As WorkBook = WorkBook.Load("report.xlsx")
xlsxWorkBook.SaveAsCsv("report.csv")
$vbLabelText   $csharpLabel

這些轉換可以保持資料完整性,包括數值類型、日期和公式(如適用)。 將多工作表 Excel 檔案轉換為 CSV 時,IronXL 會為每個工作表建立單獨的 CSV 檔案:

WorkBook multiSheetWorkBook = WorkBook.Load("multi_sheet.xlsx");
multiSheetWorkBook.SaveAsCsv("output.csv");
// Creates: output.Sheet1.csv, output.Sheet2.csv, etc.
WorkBook multiSheetWorkBook = WorkBook.Load("multi_sheet.xlsx");
multiSheetWorkBook.SaveAsCsv("output.csv");
// Creates: output.Sheet1.csv, output.Sheet2.csv, etc.
Dim multiSheetWorkBook As WorkBook = WorkBook.Load("multi_sheet.xlsx")
multiSheetWorkBook.SaveAsCsv("output.csv")
' Creates: output.Sheet1.csv, output.Sheet2.csv, etc.
$vbLabelText   $csharpLabel

轉換過程能夠優雅地處理複雜的Excel功能。 公式會根據其值進行計算,格式會盡可能保留,資料驗證規則也會在 Excel 格式中維護。 請參閱文件以了解更多關於Excel轉CSV轉換的資訊

如何使用 C# CSV 庫讀寫文件:圖 3 - 多頁 Excel 文件儲存為單獨的 CSV 文件

為了比較這些 CSV 檔案與原始 .xlsx 檔案之間的差異,我們來看看輸出結果。在記事本中開啟的 Customers 檔案與在 Excel 中檢視的 Customers 工作表:

如何使用 C# CSV 庫讀寫檔案:圖 4 - 原始 Excel 格式檔案與轉換後的 CSV 檔案對比

!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110--

為什麼選擇 IronXL 進行 CSV 檔案處理?

在評估 C# CSV 程式庫時,開發人員會考慮易用性、功能完整性和長期支援等因素。 IronXL全面滿足了這些需求:

如何使用 C# CSV 庫讀寫檔案:圖 5 - IronXL 與僅支援 CSV 的庫的比較表

除了基本的 CSV 操作外,IronXL 還提供企業級功能,例如密碼保護的檔案處理、儲存格樣式保留和公式計算。 統一的 API 意味著開發人員只需學習一個函式庫即可滿足所有電子表格需求,從而降低處理多種文件格式的專案的複雜性。

跨平台相容性確保在開發和生產環境中行為的一致性。 該程式庫的託管程式碼方法消除了特定於平台的依賴項,簡化了部署和維護。 有關詳細功能比較,請參閱IronXL 功能頁面

結論

IronXL 簡化了讀取和寫入 CSV 檔案的整個工作流程,實現了 Excel 和 CSV 之間的轉換,並處理了高階電子表格功能。 它不僅僅是另一個 CSV 庫,而是一套完整的 .NET 開發人員的電子表格工具集。

IronXL 透過結合簡潔的 API、全面的支援和企業級測試,幫助開發人員避免浪費時間去追蹤錯誤、透過暫時拉取請求進行修補或依賴分散的開源軟體包。

如果您的專案需要可靠、高效能的電子表格功能,IronXL 是您的理想之選。它能讓您輕鬆管理文件、處理資料並建立可擴展的解決方案,同時兼具專業級的穩定性和易用性。

準備好簡化您的 CSV 和 Excel 處理流程了嗎? 首先可以免費試用,價格從 $liteLicense 起,其中包括專業支援和持續更新。

常見問題解答

什麼是 IronXL,它對 C# 中的 CSV 檔案有什麼幫助?

IronXL 是一個功能強大的 C# 函式庫,可讓開發人員無縫讀取、寫入和轉換 CSV 檔案。它提供對 Excel 工作簿的延伸支援,確保高效能及一致的行、列及資料類型處理。

為何要使用 IronXL 而非 CsvHelper 等免費程式庫?

CsvHelper 非常適合基本的 CSV 作業,而 IronXL.Excel 則以 Excel 工作簿支援、增強效能和強大的資料類型處理等功能為優勢,使其適合更複雜的試算表工作流程。

IronXL 可以同時處理 CSV 和 Excel 格式嗎?

是的,IronXL.Excel 可有效處理 CSV 和 Excel 兩種格式,讓您輕鬆在兩者之間進行轉換。

IronXL 支援高效能資料處理嗎?

IronXL 專為高效能而打造,可確保順暢的資料匯入與匯出流程,並提供最佳的速度與效率。

是否可以將 IronXL 與現有的試算表工作流程整合?

當然,IronXL.Excel 可與現有的試算表工作流程無縫整合,增強跨 CSV 和 Excel 格式管理資料的能力。

IronXL 為什麼適合複雜的 CSV 檔案作業?

IronXL 提供強大的功能,例如一致處理行、列和資料類型,使其成為需要基本處理以外的複雜 CSV 檔案作業的理想選擇。

我可以使用 IronXL 將 CSV 檔案轉換為 Excel 嗎?

是的,IronXL.Excel 的主要功能之一是能夠將 CSV 檔案轉換為 Excel 格式,反之亦然,從而簡化資料管理流程。

IronXL 如何確保 CSV 檔案處理的可靠性?

IronXL.Excel 透過其先進的功能確保可靠的 CSV 檔案處理,這些功能包括支援複雜的資料類型以及與 Excel 功能整合。

使用 IronXL 進行資料匯入/匯出有哪些好處?

IronXL 提供流暢的資料匯入/匯出流程,節省開發人員的時間與精力,同時確保不同格式資料的完整性與正確性。

對於剛開始使用 C# 進行 CSV 操作的開發人員而言,IronXL 是否容易使用?

是的,IronXL 的設計具有人性化的功能和簡單的程式碼範例,讓剛開始使用 C# 進行 CSV 操作的開發人員也能輕鬆上手。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。