與其他組件比較

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、Mobile、Linux、macOS 和 Azure。

IronXL 是 C# 中領先的 .NET Core 和 .NET Framework Excel 電子表格庫。

IronXL 功能集

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

CSVWriter

一個用於撰寫CSV檔案的.NET程式庫。非常快速、靈活且易於使用。支援撰寫自定義類物件。

CsvWriter 功能特點

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

1. 建立主控台應用程式

使用以下步驟來建立主控台應用程式:

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

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

  • 點擊 下一步
  • 額外資訊 頁面中,指定您要使用的 框架版本。在此範例中,我們將使用 .NET Framework 4.8

創建專案 - .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 套件。您可以通過專案選單存取它,或者在方案總管中右鍵點擊您的專案來進行操作。

選擇-管理-NuGet-套件

  • 現在,從瀏覽標籤 -> 搜尋 IronXL.Excel -> 安裝

搜索 IronXL

  • 我們完成了。

2.2. 直接下載 NuGet 套件

這可以通過直接訪問 NuGet 網站並下載套件來完成。步驟如下:

2.3. 使用DLL手動安裝

另一種下載和安裝IronXL C#庫的方法是通過以下步驟使用開發者命令提示字元安裝IronXL NuGet包

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

2.4. 添加必要的使用指令

  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#

每個工作簿可以包含多個工作表物件。這些代表了 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 已經成為在 C# 中使用 CSVWriter 方法寫入 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 天退款保證、一年的產品支援和更新、開發/測試/生產的有效性,以及永久許可證。 (一次性購買). 輕便套裝價格從 $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.10 剛剛發布

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