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

IronXL 與 CsvWriter 的比較

使用CSV檔案可能是一項具有挑戰性的任務。 然而,今天有許多可用的程式庫可以幫助開發者完成這項任務,並無需安裝Microsoft Excel。

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

首先讓我們看看兩個程式庫各自提供了什麼。

IronXL 程式庫

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

IronXL是一個直觀的C# API,使您能以極快的速度在.NET中讀取、編輯和建立Excel試算表文件。 IronXL完全支持.NET Core、.NET Framework、Xamarin、Mobile、Linux、macOS和Azure。

IronXL是一款領先的.NET core和.net framework的Excel試算表庫,用於C#。

IronXL 功能集

  • 加載、讀取和編輯數據 — 從XLS/XLSX/CSV/TSV匯入
  • 保存和匯出 — 到XLS/XLSX/CSV/TSV/JSON
  • 範圍— 使用簡單的WorkSheet ["A1:B10"]語法。 直觀地組合和創建範圍。
  • 排序 — 排列範圍、列和行。
  • 樣式— 單元格視覺樣式、字型、大小、背景樣式、邊框、對齊和數字格式。

CSVWriter

一個用於寫入CSV文件的.NET程式庫。 非常快、靈活且易於使用。 支援寫入自定義類別對象。

CsvWriter的功能

  • 快速:即時編譯類以獲得極快速的性能
  • 靈活:寫入時保守,閱讀時自由
  • 易於使用:讀取和寫入僅需如WriteRecords(records)般簡單
  • 高度可配置
  • 支持Linux模式
  • 低內存使用

1. 創建控制台應用程序

使用以下步驟創建控制台應用程序:

  • 啟動Visual Studio 2022 IDE。
  • 點擊"創建新專案"。
  • 在"創建新專案"頁面中,從語言下拉列表選擇C#,從平台列表中選擇Windows,從"專案類型"列表中選擇控臺
  • 從顯示的專案模板中選擇控臺應用程式 (.NET Framework)
Csvhelper Alternatives 1 related to 1. 創建控制台應用程序

*創建專案 - 控制台應用程序*

  • 點擊下一步
  • 附加資訊畫面中指定您要使用的Framework版本。 在本示例中,我們將使用.NET Framework 4.8
Csvhelper Alternatives 2 related to 1. 創建控制台應用程序

*創建專案 - .NET Framework*

  • 點擊創建來完成過程。

專案現已創建,我們幾乎準備好測試這些程式庫。 然而,我們仍然需要安裝並整合它們到我們的專案中。 讓我們先安裝IronXL。

2. IronXL C# 程式庫安裝

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

  1. 使用Visual Studio安裝NuGet套件
  2. 直接下載NuGet套件
  3. 手動安裝DLL

讓我們來看一下每一種方法。

2.1. 使用Visual Studio安裝NuGet套件

Visual Studio提供了NuGet套件管理器來安裝您專案中的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#程式庫的另一種方式是通過開發者命令提示符使用以下步驟安裝IronXL NuGet包

  • 打開 開發者命令提示符— 通常在Visual Studio資料夾中找到。
  • 輸入以下指令:
    Install-Package IronXl.Excel
  • 按Enter鍵
  • 這將下載並安裝包
  • 重新加載您的Visual Studio專案並開始使用它

2.4. 添加必要的using指示符

  1. 在解決方案總管中,右鍵單擊Program.cs文件,然後點擊查看代碼。
  2. 在代碼文件頂部添加以下using指令:
using IronXL;
using IronXL;
$vbLabelText   $csharpLabel

全部完成! IronXL已下載、安裝並準備好使用。 然而,在此之前,我們應該安裝CsvHelper。

3. CSVWriter的安裝

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

要使用CSVWriter,你需要下載安裝CsvHelper C#程式庫。 要完成此操作,請通過開發者命令提示符完成以下步驟安裝NuGet包

  • 打開 開發者命令提示符— 通常在Visual Studio資料夾中找到。
  • 輸入以下指令:
    Install-Package CsvHelper -Version 27.2.1
  • 按Enter鍵
  • 這將下載並安裝包
  • 重新加載您的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");
$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");
$vbLabelText   $csharpLabel

每個WorkBook可以包含多個WorkSheet對象。 這些表示Excel文件中的工作表。 如果工作簿包含工作表,則按名稱檢索它們,如下所示:

// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
// Open Sheet for reading
var 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);
}
$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();
$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
$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; }
}
$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" }
};
$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);
}
$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);
}
$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 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me