與其他組件比較

IronXL與CsvWriter的比較

發佈 2022年5月18日
分享:

處理 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、行動裝置、Linux、macOS 和 Azure。

IronXL 是一個領先的 .NET Core 和 .NET Framework C# Excel 試算表庫。

IronXL 功能集

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

CSVWriter

用於編寫 CSV 文件的 .NET 函式庫。 極快、靈活且易於使用。 支援編寫自訂類別物件。

CsvWriter 功能

  • 快速:即時編譯類別以實現極快的效能
  • 靈活性:寫作時保守,閱讀時自由
  • 易於使用:讀取和寫入就像使用 GetRecords 一樣簡單。()和 WriteRecords(記錄)
  • 高度可配置
  • Linux 模式
  • 低內存使用

1. 建立主控台應用程式

使用以下步驟來創建一個控制台應用程式:

  • 啟動 Visual Studio 2022 IDE。
  • 點擊“創建新項目”。
  • 在「創建新專案」頁面中,從語言下拉清單中選擇 C#,從平臺清單中選擇 Windows,並從「專案類型」清單中選擇 Console
  • 選擇控制台應用程式(.NET框架)**從顯示的專案範本中選取。
    Csvhelper Alternatives 1 related to 1. 建立主控台應用程式

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

  • 下一步
  • 附加資訊 畫面中,指定您要使用的 Framework 版本。 在此範例中,我們將使用 .NET Framework 4.8

    Csvhelper Alternatives 2 related to 1. 建立主控台應用程式

    創建專案 - .NET Framework

  • 點擊 Create 完成過程。

    項目現已創建,我們幾乎準備好測試這些庫。 但是,我們仍然需要安裝並將它們整合到我們的專案中。 讓我們先安裝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 package

  • 打開開發者命令提示字元——通常位於 Visual Studio 文件夾中。
  • 輸入以下命令:PM > Install-Package IronXL.Excel
  • 按Enter键
  • 這將下載並安裝該套件
  • 重新加載您的 Visual Studio 專案並開始使用它

2.4. 添加必要的 Using 指令

  1. 在解決方案總管中,右鍵單擊 Program.cs 文件,然後點選查看程式碼。

  2. 在程式碼檔案的頂部添加以下 using 指令:
using IronXL;
using IronXL;
Imports IronXL
VB   C#

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

3. 安裝 CSVWriter

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

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

  • 打開開發者命令提示字元——通常位於 Visual Studio 文件夾中。
  • 輸入以下命令:PM> Install-Package CsvHelper -Version 27.2.1
  • 按Enter键
  • 這將下載並安裝該套件
  • 重新加載您的 Visual Studio 專案並開始使用它
  • 查看 CsvHelper.CsvWriter 方法的實現詳情。

3.2. 直接下載

從 NuGet 網站下載: https://www.nuget.org/packages/CsvHelper/

4. 使用 IronXL 處理 CSV 文件

逗號分隔值(CSV)*** 檔案是一個以逗號分隔值的分隔文本檔案。 文件的每一行都是一筆數據記錄。 要操作這些文件進行計算可能是一項具有挑戰性的任務,但IronXL提供了一個相當不錯且簡單的選擇來達成此目的,而無需使用Microsoft Excel。 首先將 CSV 檔案轉換為普通的 Excel 檔案。

4.1. 將 CSV 檔案轉換為 Excel 格式

過程非常簡單且容易。 通常只需一行代碼即可完成。

CSV 轉換為 Excel 格式:

WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
 
workbook.SaveAs("CsvToExcelConversion.xlsx");
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
 
workbook.SaveAs("CsvToExcelConversion.xlsx");
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
Dim ws As WorkSheet = workbook.DefaultWorkSheet
'
workbook.SaveAs("CsvToExcelConversion.xlsx")
VB   C#

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

IronXL WorkBook 類別代表一個 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")
VB   C#

每個 WorkBook 可以包含多個 WorkSheet 物件。 這些代表 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")
VB   C#

讀取單元格值的代碼:

// 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
VB   C#

載入並讀取工作簿和工作表後,可以使用以下代碼範例來修改公式或應用於特定單元格。 代碼如下:

// 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()
VB   C#

4.3. 將 Excel 文件保存回 CSV 檔案

使用 IronXL 寫入 CSV 檔案是一個簡單的過程。 以下代碼只需使用 SaveAsCsv 方法將 Excel 文件保存為 CSV 格式。

WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
//Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
//Saved as : SaveAsCSV.Sheet1.csv
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
//Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
//Saved as : SaveAsCSV.Sheet1.csv
Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx")
'Import .xls, .csv, or .tsv file
wb.SaveAsCsv("SaveAsCSV.csv", ",")
'Saved as : SaveAsCSV.Sheet1.csv
VB   C#

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
VB   C#

在主方法中,我們現在來建立一個 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"
	}
}
VB   C#

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
VB   C#

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
VB   C#

附加到現有檔案很棘手,因為在附加時可能會改變順序,或者我們可能已經新增了新屬性。 我們應該確保在附加時考慮到這一點。

6. 授權

IronXL 是一款公開商業的 C# Excel 庫. 它在開發過程中是免費的,並且始終可以取得商業部署的許可。授權可用適用於單個專案使用、單個開發人員、代理機構和全球企業,以及 SaaS 和 OEM 重新分發。 所有授權均包含30天退款保證、一年的產品支援和更新,有效於開發/測試/生產環境,並且還有永久授權。(一次性購買). Lite 套裝的起價為 $749。

CSVWriter與提供的分隔符是一個以逗號分隔的元素,完全免費供商業友好使用。

7. 總結與結論

摘要

IronXL 是一個完整的庫,提供您所需的一切以操作 Excel 文件。它提供了將各種格式轉換為 XLSX 的功能,並且也可以從 XLSX 轉換為其他格式,如 CSV。這種格式互換為用戶提供了靈活性,使操作其他文件格式變得輕而易舉。

另一方面,CSVWriter 只能與 CSV 文件格式一起使用,且選項非常有限。 用戶無法在不同的檔案格式之間切換,而使用IronXL則可以。 所有的程式碼範例都可以在 CsvHelper 文件中找到。 本文件提供有關如何在專案中使用CSVWriter的指導方針。

結論

IronXL 比 CSVHelper.CSVWriter 更具優勢,因為它支持多種格式。 此外,您可以根據自己的選擇應用公式和樣式,而 CsvHelper 只允許讀取和寫入 CSV 文件,且選項有限。 此外,您無法將新記錄附加到現有的 CSV 文件,因為它只會覆蓋之前的條目。

< 上一頁
IronXL 與 Spire XLS 的比較
下一個 >
IronXL 和 CsvHelper 的比較

準備開始了嗎? 版本: 2024.11 剛剛發布

免費 NuGet 下載 總下載次數: 1,111,773 查看許可證 >