跳至頁尾內容
與其他組件的比較

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是C#中領先的.NET Core和.NET框架Excel電子錶格程式庫。

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#程式庫的另一種方法是通過開發者命令提示字元安裝IronXLNuGet package

  • 打開開發者命令提示符——通常位於Visual Studio文件夾中。
  • 輸入以下命令:
    Install-Package IronXL.Excel
  • 按下Enter
  • 這將下載並安裝包
  • 重新載入您的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 package

  • 打開開發者命令提示符——通常位於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");
' 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文件

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")
$vbLabelText   $csharpLabel

每個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")
$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. 使用預設設置寫入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
$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是公開商業的C# Excel庫。 它是免費的開發且可以隨時用於商業部署。 授權可用於單一專案使用、單一開發人員、代理和全球企業以及SaaS和OEM再分發。 所有授權包括30天退費保證、為期一年的產品支援及更新、開發/測試/生產環境的有效性,以及永久授權(一鍵購買)。 Lite 套件從$999開始。

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

7. 總結與結論

摘要

IronXL是一個完整的程式庫,提供您需要的所有功能來操作Excel文件。它提供從各種格式轉換到XLSX的設施,也可以從XLSX轉換為其他格式,例如CSV。這種相互轉換為使用者提供了輕鬆操作其他文件格式的靈活性。

另一方面,CSVWriter僅能處理CSV文件格式,並且選項非常有限。 使用者不能在不同文件格式之間切換,而使用IronXL則可以。 所有程式碼樣本均可在CsvHelper文件文件中找到。 本文件提供如何在您的專案中使用CSVWriter的指南。

結論

IronXL在支持多格式操作方面比CSVHelper.CSVWriter具有明顯的優勢。 此外,您可以根據需要應用公式和樣式,而CsvHelper僅允許讀取和寫入CSV文件,並且選項有限。 此外,您無法將新記錄附加到現有的CSV文件,因為它只是覆蓋以前的條目。

常見問題

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

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檔案中。它允許您打開現有的工作簿,通過新增新資料進行修改,然後保存變更而不會覆寫現有內容。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

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