跳過到頁腳內容
與其他組件的比較

IronXL 與 CsvWriter 的比較

處理 CSV 檔案可能是一項具有挑戰性的任務。 然而,如今有許多函式庫可以幫助開發人員完成這項任務,而無需安裝 Microsoft Excel。

在本文中,我們將討論並比較如何使用兩個最受歡迎的函式庫 IronXL 和 CSVWriter,在 C# .NET 技術中以程式設計方式處理 Microsoft Excel 文件(無論是 CSV 格式還是標準 Excel 格式)。

我們先來看看這兩個圖書館分別提供了哪些功能。

IronXL圖書館

IronXL 是一個 .NET 函式庫,它能夠使用 C# 讀取和編輯 Microsoft Excel 文件。 IronXL.Excel 是一個獨立的 .NET 軟體庫,用於讀取各種電子表格格式。 它不需要安裝 Microsoft Excel,也不依賴 Interop。

IronXL 是一個直覺的 C# API,它允許您在 .NET 中以閃電般的速度讀取、編輯和建立 Excel 電子表格檔案。 IronXL 完全支援 .NET Core、.NET Framework、Xamarin、行動平台、Linux、macOS 和 Azure。

IronXL 是一個領先的 .NET core 和 .net framework Excel 電子表格庫,適用於 C#。

IronXL 功能集

  • 載入、讀取和編輯資料-來自 XLS/XLSX/CSV/TSV 格式
  • 儲存與匯出 — 格式為 XLS/XLSX/CSV/TSV/JSON
  • 範圍 — 易於使用的工作表 ["A1:B10"] 語法。 直觀地組合和創建範圍。
  • 排序 — 對範圍、列和行進行排序。
  • 樣式 — 儲存格視覺樣式、字體、大小、背景圖案、邊框、對齊方式和數字格式。

CSV寫入器

一個用於寫入 CSV 檔案的 .NET 函式庫。 速度極快、靈活便利、易於使用。 支援編寫自訂類別物件。

CsvWriter 功能

  • 速度快:即時編譯類,效能極快
  • 靈活:寫作時保守,閱讀時開放
  • 易於使用:讀寫操作就像 GetRecords<t>()WriteRecords(records) 一樣簡單
  • 高度可配置
  • Linux 模式
  • 記憶體佔用低

1. 建立控制台應用程式

請依照下列步驟建立控制台應用程式:

  • 啟動 Visual Studio 2022 IDE。
  • 點選"建立新項目"。
  • 在"建立新項目"頁面中,從語言下拉清單中選擇C# ,從平台清單中選擇Windows ,從"項目類型"清單中選擇控制台
  • 從顯示的專案範本中選擇控制台應用程式 (.NET Framework)
Csvhelper Alternatives 1 related to 1. 建立控制台應用程式

建立專案 - 控制台應用程式

點選"下一步"

  • "附加資訊"畫面中,指定您要使用的框架版本。 本範例將使用.NET Framework 4.8
Csvhelper Alternatives 2 related to 1. 建立控制台應用程式

建立專案 - .NET Framework

點擊"創建"完成該過程。

專案已經創建完成,我們幾乎可以開始測試庫了。 但是,我們仍然需要將它們安裝並整合到我們的專案中。 我們先來安裝IronXL。

2. IronXL C# 庫的安裝

您可以使用以下方法下載並安裝 IronXL 庫:

  1. 在 Visual Studio 中使用 NuGet 套件 2.直接下載 NuGet 套件
  2. 使用 DLL 檔案手動安裝

讓我們仔細看看每一個。

2.1. 在 Visual Studio 中使用 NuGet 套件

Visual Studio 提供 NuGet Package Manager,可在專案中安裝 NuGet 套件。 您可以透過專案功能表,或在解決方案總管中右鍵按一下專案來存取。

Csvhelper Alternatives 3 related to 2.1. 在 Visual Studio 中使用 NuGet 套件

選擇-管理-NuGet-套件

現在,從瀏覽標籤中搜尋 IronXL.Excel 並安裝

Csvhelper Alternatives 4 related to 2.1. 在 Visual Studio 中使用 NuGet 套件

搜尋 IronXL

好了,我們完成了。

2.2.直接下載 NuGet 套件。

您可以直接造訪 NuGet 網站並下載套件。 步驟如下

2.3. 使用 DLL 手動安裝

下載和安裝 IronXL C# 庫的另一種方法是使用以下步驟透過開發人員命令提示字元安裝IronXLNuGet 套件

  • 開啟開發者命令提示字元-通常位於 Visual Studio 資料夾中。
  • 輸入以下命令:
    Install-Package IronXL.Excel
  • 按回車鍵 這將下載並安裝該軟體包。
  • 重新載入您的 Visual Studio 專案並開始使用。

2.4. 加入必要的 using 指令

  1. 在解決方案資源管理器中,右鍵點選 Program.cs 文件,然後按一下"檢視程式碼"。
  2. 在程式碼檔案頂部新增以下 using 指令:
using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

全部完成! IronXL 已下載、安裝完畢,可以使用了。 但在此之前,我們應該先安裝 CsvHelper。

3. CSVWriter 安裝

3.1. 使用 NuGet 套件管理器控制台

要使用 CSVWriter,您需要下載並安裝 CsvHelper C# 函式庫。 為此,請按照以下步驟透過開發人員命令提示字元安裝NuGet 套件

  • 開啟開發者命令提示字元-通常位於 Visual Studio 資料夾中。
  • 輸入以下命令:
    Install-Package CsvHelper -Version 27.2.1
  • 按回車鍵 這將下載並安裝該軟體包。
  • 重新載入您的 Visual Studio 專案並開始使用。
  • 查看 CsvHelper.CsvWriter 方法的詳細資訊以了解實作方式

3.2. 直接下載

Download from the NuGet website: https://www.nuget.org/packages/CsvHelper/

4. 使用 IronXL 處理 CSV 文件

逗號分隔值 (CSV)檔案是一種使用逗號分隔值的文字檔案。 文件的每一行都是一筆資料記錄。 處理這些文件進行計算可能是一項具有挑戰性的任務,但 IronXL 提供了一個相當不錯且簡單的選項來實現此目的,而且無需使用 Microsoft Excel。 我們先來把 CSV 檔案轉換成普通的 Excel 檔案。

4.1 將 CSV 檔案轉換為 Excel 格式

這個過程非常簡單易行。 通常只需一行程式碼即可完成。

CSV 轉 Excel 格式:

// Load the CSV file and specify the format and delimiter
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Get the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
// Load the CSV file and specify the format and delimiter
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Get the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
' Load the CSV file and specify the format and delimiter
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
' Get the default worksheet
Dim ws As WorkSheet = workbook.DefaultWorkSheet

' Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx")
$vbLabelText   $csharpLabel

4.2. 使用 IronXL 讀取和操作轉換後的 CSV 文件

IronXLWorkBook 類別代表一個 Excel 工作表。 要使用 C# 開啟 Excel 文件,我們使用 WorkBook.Load 並指定 Excel 文件 (.xlsx) 的路徑。 以下一行程式碼用於開啟檔案進行讀取:

// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
// Load WorkBook
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
' Load WorkBook
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")
$vbLabelText   $csharpLabel

每個工作簿可以包含多個工作表物件。 這些代表 Excel 文件中的工作表。 如果工作簿包含工作表,請以下列方式按名稱擷取它們:

// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
' Open Sheet for reading
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
$vbLabelText   $csharpLabel

讀取單元格值的程式碼:

// Read from Ranges of cells elegantly.
foreach (var cell in worksheet["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Read from Ranges of cells elegantly.
foreach (var cell in worksheet["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
' Read from Ranges of cells elegantly.
For Each cell In worksheet("A2:A10")
	Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cell
$vbLabelText   $csharpLabel

載入並讀取工作簿和工作表後,可以使用下列程式碼範例來變更公式或將公式套用至特定儲存格。 代碼如下:

// Set Formulas
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";

// Force recalculate all formula values in all sheets.  
workbook.EvaluateAll();
// Set Formulas
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";

// Force recalculate all formula values in all sheets.  
workbook.EvaluateAll();
' Set Formulas
worksheet("A1").Formula = "Sum(B8:C12)"
worksheet("B8").Formula = "=C9/C11"
worksheet("G30").Formula = "Max(C3:C7)"

' Force recalculate all formula values in all sheets.  
workbook.EvaluateAll()
$vbLabelText   $csharpLabel

4.3. 將 Excel 文檔儲存回 CSV 文件

使用 IronXL 編寫 CSV 檔案非常簡單。 以下程式碼使用 SaveAsCsv 方法將 Excel 檔案儲存為 CSV 格式。

// Load the workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save as .csv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// Saved as : SaveAsCSV.Sheet1.csv
// Load the workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save as .csv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// Saved as : SaveAsCSV.Sheet1.csv
' Load the workbook
Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx")
' Save as .csv file
wb.SaveAsCsv("SaveAsCSV.csv", ",")
' Saved as : SaveAsCSV.Sheet1.csv
$vbLabelText   $csharpLabel

5. 使用 CSVWriter 處理 CSV 資料

將資料寫入 CSV 檔案是一種常見操作。 CSVHelper 方法 CSVWriter 提供分隔符,可以處理所有字元和換行符,這是一個非常簡單的 C# CSV 寫入器。 接下來我們將學習如何使用 CSVWriter 寫入資料。

5.1 建立一個簡單的控制台應用程式

使用 Visual Studio 建立一個簡單的指定分隔符號的 CSVWriter 控制台應用程式。 專案建立完成後,下一步是建立 Person 類別:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsLiving { get; set; }
}
public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsLiving { get; set; }
}
Public Class Person
	Public Property Id() As Integer
	Public Property Name() As String
	Public Property IsLiving() As Boolean
End Class
$vbLabelText   $csharpLabel

在 Main 方法中,我們現在建立一個 Person 物件列表,並將該列表寫入 CSV 檔案:

var myPersonObjects = new List<Person>()
{
    new Person { Id = 1, IsLiving = true, Name = "John" },
    new Person { Id = 2, IsLiving = true, Name = "Steve" },
    new Person { Id = 3, IsLiving = true, Name = "James" }
};
var myPersonObjects = new List<Person>()
{
    new Person { Id = 1, IsLiving = true, Name = "John" },
    new Person { Id = 2, IsLiving = true, Name = "Steve" },
    new Person { Id = 3, IsLiving = true, Name = "James" }
};
Dim myPersonObjects = New List(Of Person)() From {
	New Person With {
		.Id = 1,
		.IsLiving = True,
		.Name = "John"
	},
	New Person With {
		.Id = 2,
		.IsLiving = True,
		.Name = "Steve"
	},
	New Person With {
		.Id = 3,
		.IsLiving = True,
		.Name = "James"
	}
}
$vbLabelText   $csharpLabel

5.2. 使用預設設置,在 C# 中寫入 CSV 文件

CsvHelper 已成為使用 CSVWriter 方法在 C# 中編寫 CSV 檔案的標準方法,而且非常容易使用:

using (var writer = new StreamWriter("filePersons.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(myPersonObjects);
}
using (var writer = new StreamWriter("filePersons.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(myPersonObjects);
}
Using writer = New StreamWriter("filePersons.csv")
Using csv = New CsvWriter(writer, CultureInfo.InvariantCulture)
	csv.WriteRecords(myPersonObjects)
End Using
End Using
$vbLabelText   $csharpLabel

5.3. 追加資料

我們需要記住,每次執行程式時,舊的 CSV 檔案都會被覆寫。 有時我們希望將資料追加到文件末尾,而不是覆蓋現有資料。 CSVWriter 沒有提供執行此操作的方法,因為使用提供的分隔符號開啟/寫入檔案不是 CSVWriter 的職責。 我們可以使用 FileStream 來實現這一點,然後使用該 FileStream 建置我們的 StreamWriter。 雖然這不在本文的討論範圍之內,但我還是要向您展示如何操作,因為它是任何應用程式不可或缺的一部分。

var configPersons = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    HasHeaderRecord = false
};
using (var stream = File.Open("filePersons.csv", FileMode.Append))
using (var writer = new StreamWriter(stream))
using (var csv = new CsvWriter(writer, configPersons))
{
    csv.WriteRecords(myPersonObjects);
}
var configPersons = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    HasHeaderRecord = false
};
using (var stream = File.Open("filePersons.csv", FileMode.Append))
using (var writer = new StreamWriter(stream))
using (var csv = new CsvWriter(writer, configPersons))
{
    csv.WriteRecords(myPersonObjects);
}
Dim configPersons = New CsvConfiguration(CultureInfo.InvariantCulture) With {.HasHeaderRecord = False}
Using stream = File.Open("filePersons.csv", FileMode.Append)
Using writer = New StreamWriter(stream)
Using csv = New CsvWriter(writer, configPersons)
	csv.WriteRecords(myPersonObjects)
End Using
End Using
End Using
$vbLabelText   $csharpLabel

但是,向現有文件追加內容比較棘手,因為追加時順序可能會改變,或者我們可能會添加了新的屬性。 在添加內容時,我們應該確保考慮到這一點。

6. 許可

IronXL is an openly commercial C# Excel library. It is free for development and can always be licensed for commercial deployment.Licenses are availablefor single-project use, single developers, agencies, and global corporations, as well as SaaS and OEM redistribution. 所有授權均包含 30 天退款保證、一年的產品支援與更新、開發/暫存/生產的有效性,以及永久授權(一次性購買)。 Lite 軟體套件從 $799 開始。

使用提供的分隔符號的 CSVWriter 是一個逗號分隔的元素,完全免費,可用於商業用途。

7. 總結與結論

概括

IronXL 是一個功能齊全的庫,提供您處理 Excel 文件所需的一切。它支援將各種格式轉換為 XLSX,以及將 XLSX 轉換為其他格式,例如 CSV。這種互轉功能使用戶能夠輕鬆且靈活地處理其他文件格式。

另一方面,CSVWriter 僅支援 CSV 檔案格式,且功能選項非常有限。 使用者無法在不同的檔案格式之間切換,而使用 IronXL 則可以。 所有程式碼範例都可以在 CsvHelper 文件檔案中找到。 本文檔提供了在專案中使用 CSVWriter 的指南。

結論

IronXL 比 CSVHelper.CSVWriter 具有明顯的優勢,因為它支援處理多種格式。 此外,您可以根據自己的選擇套用公式和樣式,而 CsvHelper 僅允許讀取和寫入 CSV 文件,且選項有限。 此外,您無法在現有的 CSV 檔案中新增記錄,因為這會覆寫先前的條目。

常見問題解答

CSVWriter 處理 C# 中 Excel 文檔的替代方案有哪些?

IronXL 是處理 C# 中 Excel 文檔的 CSVWriter 的絕佳替代方案。它允許您讀取、編輯和導出各種 Excel 格式,例如 XLS、XLSX、CSV 和 TSV,而無需安裝 Microsoft Excel。

如何使用 .NET 庫將 CSV 文件轉換為 Excel 格式?

使用 IronXL,您可以輕鬆地將 CSV 文件轉換為 Excel 格式,方法是將 CSV 加載到工作簿中,然後將其保存為 XLSX 文件。這一過程涉及簡單的代碼命令來操作和保存文件。

IronXL 與 CSVWriter 相比有哪些優勢?

IronXL 與 CSVWriter 相比提供了多種優勢,包括支持多種文件格式、應用 Excel 公式的功能以及數據排序和樣式設置等高級功能。相反,CSVWriter 僅限於處理 CSV 文件。

如何在我的 C# 項目中安裝 IronXL?

您可以通過 Visual Studio 中的 NuGet 包管理器在您的 C# 項目中安裝 IronXL。或者,您可以下載 NuGet 包或通過開發者命令提示符手動安裝 DLL。

IronXL 可以在 .NET Core 和 Azure 環境中使用嗎?

是的,IronXL 支持多個平台,包括 .NET Core 和 Azure,使其成為開發需要跨不同環境操作 Excel 文件的應用程序的多功能選擇。

使用 CSVWriter 可以將自定義類對象寫入 CSV 文件嗎?

是的,CSVWriter 支持將自定義類對象寫入 CSV 文件。它提供了一種靈活且易於使用的方法來高效地寫入數據,同時處理 CSV 文件。

在商業應用中使用 IronXL 的許可要求是什麼?

IronXL 需要商業使用許可。開發過程中是免費的,但根據部署需求(無論是單個項目還是企業級應用)提供不同的許可。

IronXL 如何處理 Excel 公式?

IronXL 允許您在電子表格中應用和操作 Excel 公式,為在 C# 應用中提供動態數據計算和分析的強大功能。

使用 IronXL 的一些常見故障排除問題是什麼?

使用 IronXL 的常見故障排除問題可能包括文件格式兼容性、數據類型不匹配或安裝錯誤。確保項目引用設置正確並驗證數據格式可以幫助解決這些問題。

IronXL 可以將數據附加到現有的 Excel 文件嗎?

是的,IronXL 可以將數據附加到現有的 Excel 文件中。它允許您打開一個現有的工作簿,通過添加新數據進行修改,然後保存更改而不覆蓋現有內容。

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

鋼鐵支援團隊

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