Porównanie IronXL i CsvHelper
Praca z plikami CSV może być trudnym zadaniem. Obecnie dostępnych jest wiele bibliotek, które pomagają programistom w tym zadaniu bez konieczności instalowania programu Microsoft Excel.
W tym artykułe omówimy i porównamy sposoby programowej pracy z dokumentami Microsoft Excel w środowisku C# .NET Technologies, zarówno w formacie CSV, jak i standardowym formacie XLSX, przy użyciu dwóch najpopularniejszych bibliotek: IronXL i CsvHelper.
Przyjrzyjmy się najpierw temu, co mają do zaoferowania obie biblioteki.
Biblioteka IronXL
Biblioteka IronXL .NET ułatwia odczyt i edycję dokumentów Microsoft Excel za pomocą języka C#. IronXL.Excel to samodzielna biblioteka oprogramowania .NET służąca do odczytu szerokiej gamy formatów arkuszy kalkulacyjnych. Nie wymaga instalacji programu Microsoft Excel ani nie jest zależne od Interop. Bardzo sprawnie współpracuje z plikami CSV.
IronXL to intuicyjny interfejs API języka C#, który umożliwia odczytywanie, edytowanie i tworzenie plików arkuszy kalkulacyjnych Excel w środowisku .NET z błyskawiczną wydajnością. IronXL w pełni obsługuje .NET Core, .NET Framework, Xamarin, urządzenia mobilne, systemy Linux, macOS oraz platformę Azure.
IronXL to wiodąca biblioteka arkuszy kalkulacyjnych Excel dla C# oparta na platformach .NET Core i .NET Framework.
Zestaw funkcji IronXL
- Wczytuj, przeglądaj i edytuj dane — z plików XLS/XLSX/CSV/TSV
- Zapisywanie i eksportowanie — do formatów XLS/XLSX/CSV/TSV/JSON
- Zakresy — łatwa w użyciu składnia
WorkSheet["A1:B10"]. Intuicyjnie łącz i twórz zakresy. - Sortowanie — sortowanie zakresów, kolumn i wierszy.
- Stylizacja — style wizualne komórek, czcionka, rozmiar, wzór tła, obramowanie, wyrównanie i formaty liczb.
CsvHelper
Biblioteka .NET do odczytu i zapisu plików CSV. Niezwykle szybkie, elastyczne i łatwe w użyciu. Obsługuje odczyt i zapis obiektów klas niestandardowych. Wszystkie przykładowe kody są dostępne w dokumentacji pakietu CsvHelper.
Jak korzystać z CsvHelper w języku C#
- Zainstaluj bibliotekę CsvHelper C# do odczytu plików CSV
- Wykorzystaj klasę
CsvConfigurationdo ustawienia konfiguracji dla CSV - Otwórz plik za pomocą wbudowanego w C#
StreamReader - Input the instances made in steps 2 & 3 to
CsvReaderclass to read - Konwertuj dane w CSV, dziedzicząc klasę CsvHelper
DefaultTypeConverter
Funkcje CsvHelper
- Szybkie: kompiluje klasy na żywo dla niezwykle szybkiej wydajności
- Elastyczna: konserwatywna przy pisaniu, liberalna przy czytaniu
- Łatwy w użyciu: czytanie i pisanie są tak proste jak
GetRecords<t>()iWriteRecords(records) - Wysoce konfigurowalna
- Tryb Linux
- Niskie zużycie pamięci
1. Utwórz aplikację konsolową
Aby utworzyć aplikację konsolową, wykonaj następujące kroki:
- Uruchom IDE Visual Studio 2022.
- Kliknij "Utwórz nowy projekt".
- Na stronie "Utwórz nowy projekt" wybierz C# z listy rozwijanej język, Windows z listy Platformy, oraz Konsola z listy "Typy projektów".
- Wybierz Aplikacja konsolowa (.NET Framework) z wyświetlanych szablonów projektów.
Utwórz projekt - Aplikacja konsolowa
- Kliknij Dalej.
- Na ekranie Dodatkowe informacje określ wersję Framework, której chcesz użyć. W tym przykładzie użyjemy .NET Framework 4.8.
Utwórz projekt - .NET Framework
- Kliknij Utwórz, aby zakończyć proces.
Projekt jest teraz utworzony i jesteśmy prawie gotowi do przetestowania bibliotek. Jednak nadal musimy je zainstalować i zintegrować z naszym projektem. Najpierw zainstalujmy IronXL.
2. Instalacja biblioteki IronXL C
Bibliotekę IronXL można pobrać i zainstalować, korzystając z następujących metod:
- Używanie Visual Studio z pakietami NuGet
- Pobierz pakiet NuGet bezpośrednio
- Ręczna instalacja z użyciem DLL
Przyjrzyjmy się bliżej każdemu z nich.
2.1. Korzystanie z programu Visual Studio z pakietami NuGet
Visual Studio udostępnia menedżera pakietów NuGet do instalowania pakietów NuGet w projektach. Dostęp do niego można uzyskać poprzez menu Projekt lub klikając prawym przyciskiem myszy na projekt w Eksploratorze rozwiązań.
Wybierz-Zarządzaj-Pakietem-NuGet
- Teraz z karty przeglądaj -> wyszukaj IronXL.Excel -> Zainstaluj
Wyszukaj IronXL
- I gotowe.
2.2. Pobierz pakiet NuGet bezpośrednio
Można to zrobić, odwiedzając bezpośrednio stronę NuGet i pobierając pakiet. Kroki są następujące:
- Navigate to https://www.nuget.org/packages/IronXL.Excel
- Wybierz "Pobierz pakiet"
- Kliknij dwukrotnie pobrany pakiet
- Pakiet zostanie zainstalowany
- Ponownie załaduj swój projekt Visual Studio i zacznij z niego korzystać
2.3. Ręczna instalacja za pomocą pliku DLL
Innym sposobem pobrania i zainstalowania biblioteki IronXL C# jest wykonanie poniższych kroków w celu zainstalowania pakietu IronXL NuGet za pomocą wiersza poleceń programisty.
- Otwórz wiersz poleceń programisty — zazwyczaj znajduje się on w folderze Visual Studio.
- Wpisz następujące polecenie:
PM> Install-Package IronXL.Excel - Naciśnij Enter
- To pobierze i zainstaluje pakiet
- Ponownie załaduj swój projekt Visual Studio i zacznij z niego korzystać
2.4. Dodaj niezbędne dyrektywy using
- W oknie Solution Explorer kliknij prawym przyciskiem myszy plik Program.cs, a następnie wybierz opcję View Code.
- Dodaj następujące dyrektywy using na początku pliku kodu:
using IronXL;
using IronXL;
Imports IronXL
Gotowe! IronXL jest pobrany, zainstalowany i gotowy do użycia. Jednak zanim to zrobimy, powinniśmy zainstalować CsvHelper.
3. Instalacja CsvHelper
3.1. Korzystanie z konsoli menedżera pakietów NuGet
Aby pobrać i zainstalować bibliotekę CsvHelper w C#, skorzystaj z poniższych kroków, aby zainstalować pakiet NuGet przez wiersz polecenia dla deweloperów.
- Otwórz wiersz poleceń programisty — zazwyczaj znajduje się on w folderze Visual Studio.
- Wpisz następujące polecenie:
PM> Install-Package CsvHelper -Version 27.2.1 - Naciśnij Enter
- To pobierze i zainstaluje pakiet
- Ponownie załaduj swój projekt Visual Studio i zacznij z niego korzystać
3.2. Pobieranie bezpośrednie
Pobierz z witryny NuGet: https://www.nuget.org/packages/CsvHelper.
4. Praca z plikami CSV przy użyciu IronXL
Wartości rozdzielane przecinkami (CSV) to plik tekstowy z ogranicznikami, który używa przecinka do oddzielania wartości. Każda linia pliku to rekord danych. Manipulowanie tymi plikami w celu obliczeń może być trudnym zadaniem, a IronXL dostarcza całkiem dobrą i łatwą opcję, aby to zrobić bez Microsoft Excel. Najpierw przekształćmy plik CSV na zwykły plik Excel.
4.1. Konwertowanie pliku CSV na format Excel
Proces jest dość prosty i łatwy. Zazwyczaj wykonuje się to za pomocą jednej linii kodu.
Formaty CSV do Excel:
// Load the CSV file and convert it to an Excel format
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Access the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;
// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
// Load the CSV file and convert it to an Excel format
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Access the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;
// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
' Load the CSV file and convert it to an Excel format
Dim workbook As WorkBook = WorkBook.LoadCSV("test.csv", fileFormat:= ExcelFileFormat.XLSX, ListDelimiter:= ",")
' Access the default worksheet
Dim ws As WorkSheet = workbook.DefaultWorkSheet
' Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx")
4.2. Odczyt i manipulacja przekonwertowanymi plikami CSV przy użyciu IronXL
Klasa IronXL WorkBook reprezentuje arkusz Excel. Aby otworzyć plik Excel za pomocą C#, używamy WorkBook.Load i określamy ścieżkę do pliku Excel (.xlsx). Poniższy jednowierszowy kod służy do otwarcia pliku w celu odczytu:
// 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")
Każdy WorkBook może zawierać wiele obiektów WorkSheet. Są to arkusze w dokumencie Excel. Jeśli skoroszyt zawiera arkusze, należy je pobrać według nazwy w następujący sposób:
// Open the sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
// Open the sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
' Open the sheet for reading
Dim worksheet = workbook.GetWorkSheet("sheetnamegoeshere")
Kod do odczytu wartości komórek:
// 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
Po załadowaniu i odczytaniu skoroszytu i arkusza kalkulacyjnego, poniższy przykład kodu może być wykorzystany do wprowadzenia zmian w formułach lub ich zastosowaniu w konkretnych komórkach. Kod wygląda następująco:
// Set formulas in specific cells
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 in specific cells
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 in specific cells
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()
4.3. Zapisanie dokumentu Excel z powrotem do pliku CSV
Pisanie plików CSV jest łatwym procesem przy użyciu IronXL. Poniższy kod po prostu zapisuje plik Excel w formacie CSV za pomocą metody SaveAsCsv.
// Load the Excel Workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save the workbook as a CSV file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// This will save as "SaveAsCSV.Sheet1.csv"
// Load the Excel Workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save the workbook as a CSV file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// This will save as "SaveAsCSV.Sheet1.csv"
' Load the Excel Workbook
Dim wb As WorkBook = WorkBook.Load("Normal_Excel_File.xlsx")
' Save the workbook as a CSV file
wb.SaveAsCsv("SaveAsCSV.csv", ",")
' This will save as "SaveAsCSV.Sheet1.csv"
5. Praca z plikami CSV przy użyciu CsvHelper
Odczytywanie plików CSV to jedno z tych zadań, które wydają się znacznie łatwiejsze, niż są w rzeczywistości. Biblioteka CsvHelper umożliwia łatwe pisanie kodu, który jest bezpieczny typowo, szybki i elastyczny.
5.1. Odczyt plików CSV z użyciem CsvHelper
To przykład pliku CSV, ma trzy kolumny tekstowe i jedną kolumnę liczbową.
FirstName,LastName,Age,IsActive
Ali,Talal,30,Yes
Affan,Ahmad,31,No
Saad,Bhatti,31,Yes
Zmapujemy każdy wiersz na obiekt typu Person.
// Define the Person class to map CSV records
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int? Age { get; set; }
public string IsActive { get; set; }
}
// Define the Person class to map CSV records
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int? Age { get; set; }
public string IsActive { get; set; }
}
' Define the Person class to map CSV records
Public Class Person
Public Property FirstName() As String
Public Property LastName() As String
Public Property Age() As Integer?
Public Property IsActive() As String
End Class
Kod do odczytu naszego pliku CSV znajduje się poniżej.
// Define the path to the CSV file
var fileName = @"<path to our CSV file>";
// Configure CsvHelper
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Encoding = Encoding.UTF8,
Delimiter = ","
};
// Read CSV file
using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (var textReader = new StreamReader(fs, Encoding.UTF8))
using (var csv = new CsvReader(textReader, configuration))
{
var data = csv.GetRecords<Person>();
// Iterate over each person record
foreach (var person in data)
{
// Process each Person object
}
}
}
// Define the path to the CSV file
var fileName = @"<path to our CSV file>";
// Configure CsvHelper
var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
Encoding = Encoding.UTF8,
Delimiter = ","
};
// Read CSV file
using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (var textReader = new StreamReader(fs, Encoding.UTF8))
using (var csv = new CsvReader(textReader, configuration))
{
var data = csv.GetRecords<Person>();
// Iterate over each person record
foreach (var person in data)
{
// Process each Person object
}
}
}
' Define the path to the CSV file
Dim fileName = "<path to our CSV file>"
' Configure CsvHelper
Dim configuration = New CsvConfiguration(CultureInfo.InvariantCulture) With {
.Encoding = Encoding.UTF8,
.Delimiter = ","
}
' Read CSV file
Using fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)
Using textReader = New StreamReader(fs, Encoding.UTF8)
Using csv = New CsvReader(textReader, configuration)
Dim data = csv.GetRecords(Of Person)()
' Iterate over each person record
For Each person In data
' Process each Person object
Next person
End Using
End Using
End Using
Typ data to IEnumerable<Person>. CsvHelper automatycznie zmapuje każdą kolumnę do właściwości o tej samej nazwie. Na przykład wartość w kolumnie FirstName zostanie zmapowana na Person.FirstName. Następnie możemy iterować data i uzyskać dostęp do wartości w każdym wierszu.
5.2. Konwersja danych w plikach CSV z jednego typu na inny
Pliki CSV głównie zawierają dane tekstowe. Na przykład kolumna wieku jest wartością liczbową, a plik CSV zawiera tylko tekst. CsvHelper może konwertować dane z łańcucha znaków na standardowe typy .NET (Boolean, Int32, Int64, Enum). W naszym przypadku mamy typ danych IsActive bool, który może mieć tylko True/False i zawiera niestandardowe wartości. Można go przekształcić, tworząc niestandardowy konwerter. Stylizacja kodu przebiega w nastepujacy sposob:
// Custom Boolean Converter for CsvHelper
public class CustomBooleanConverter : DefaultTypeConverter
{
public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
{
// Convert "Yes" to true and anything else to false
return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
}
}
// Custom Boolean Converter for CsvHelper
public class CustomBooleanConverter : DefaultTypeConverter
{
public override object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData)
{
// Convert "Yes" to true and anything else to false
return text.Equals("Yes", StringComparison.OrdinalIgnoreCase);
}
}
' Custom Boolean Converter for CsvHelper
Public Class CustomBooleanConverter
Inherits DefaultTypeConverter
Public Overrides Function ConvertFromString(ByVal text As String, ByVal row As IReaderRow, ByVal memberMapData As MemberMapData) As Object
' Convert "Yes" to true and anything else to false
Return text.Equals("Yes", StringComparison.OrdinalIgnoreCase)
End Function
End Class
Mimo że bool jest standardowym typem .NET, domyślny konwerter obsługuje tylko wartość True/False, podczas gdy nasz plik CSV ma Yes/No. Tutaj musimy podklasować DefaultTypeConverter, a następnie nadpisać metodę ConvertFromString.
6. Licencjonowanie
IronXL to komercyjna biblioteka Excel w C#. Jest bezpłatny do celów programistycznych i zawsze można uzyskać licencję na wdrożenie komercyjne. Licencje sa dostepne do uzytku w pojedynczym projekcie, dla jednego dewelopera, agencji oraz globalnych korporacji, a takze na potrzeby SaaS i redystrybucji OEM. Wszystkie licencje obejmują 30-dniową gwarancję zwrotu pieniędzy, roczną pomoc techniczną i aktualizacje, ważność na środowiska deweloperskie, testowe i produkcyjne, a także licencję stałą (jednorazowy zakup). Pakiet Lite zaczyna się od $999.
CsvHelper - odczyt i zapis plikow CSV sa calkowicie darmowe do uzytku komercyjnego.
7. Podsumowanie i wnioski
Podsumowanie
IronXL to kompletna biblioteka oferujaca wszystko, co potrzebne do manipulacji plikiem Excel. Jest latwa w uzyciu i umozliwia konwersje roznych formatow do XLSX oraz z XLSX do innych formatow, takich jak CSV. Ta mozliwosc konwersji zapewnia uzytkownikowi elastycznosc pracy z roznymi formatami plikow.
Z kolei CsvHelper jest zaprojektowany specyficznie do pracy z formatem plikow CSV, co oznacza, ze potrafi obsluzyc tylko pliki CSV. Wsystkie przykladowe kody sa dostepne w dokumentacji CsvHelper. Dokumentacja oferuje wskazowki, jak korzystac z CsvHelper w swoim projekcie.
Wnioski
IronXL ma wyrazna przewage nad CsvHelper, poniewaz wspiera prace z wieloma formatami. Ponadto mozna stosowac formuly i style wedlug wlasnych potrzeb, podczas gdy CsvHelper umozliwia tylko odczyt i zapis plikow CSV z ograniczonymi opcjami. Nie mozna rowniez dopisac nowych rekordow do istniejacego pliku CSV, poniewaz jedynie nadpisuje wczesniejsze wpisy.
Często Zadawane Pytania
Jak mogę konwertować pliki Excel do różnych formatów za pomocą języka C#?
Za pomocą IronXL można konwertować pliki Excel do różnych formatów, takich jak XLS, XLSX, CSV i TSV. Można to zrobić, ładując plik do IronXL i zapisując go w wybranym formacie, korzystając z wszechstronnych opcji eksportu.
Jakie są zalety korzystania z IronXL zamiast CsvHelper do obsługi plików Excel?
IronXL oferuje kompleksową funkcjonalność do pracy z wieloma formatami Excel, w tym XLS, XLSX i CSV. Obsługuje funkcje takie jak manipulowanie danymi, stylizacja i stosowanie formuł, co czyni go idealnym rozwiązaniem dla projektów wymagających intensywnej obsługi plików Excel. Natomiast CsvHelper został zaprojektowany specjalnie z myślą o szybkiej i wydajnej obsłudze plików CSV.
Jak zainstalować IronXL w projekcie C#?
IronXL można zainstalować za pomocą menedżera pakietów NuGet w Visual Studio, wyszukując hasło „IronXL”. Alternatywnie można pobrać pakiet NuGet bezpośrednio lub zainstalować go ręcznie, odwołując się do biblioteki DLL w projekcie.
Czy z IronXL można korzystać bez zainstalowanego programu Microsoft Excel?
Tak, IronXL nie wymaga zainstalowania programu Microsoft Excel w systemie. Działa niezależnie, umożliwiając odczyt, edycję i tworzenie plików Excel w różnych formatach.
Jak odczytywać i zapisywać pliki CSV za pomocą CsvHelper?
CsvHelper pozwala zdefiniować klasę do mapowania rekordów CSV, skonfigurować ustawienia CsvHelper oraz używać CsvReader i CsvWriter do łatwego obsługi operacji na plikach CSV.
Co sprawia, że CsvHelper jest popularnym wyborem do obsługi plików CSV?
CsvHelper jest znany ze swojej szybkości, elastyczności i łatwości użytkowania. Obsługuje obiekty klas niestandardowych i konwersje typów, co czyni go preferowanym wyborem dla projektów skupionych wyłącznie na przetwarzaniu danych CSV.
Czy istnieją wymagania licencyjne dotyczące korzystania z IronXL?
Tak, wdrożenie IronXL w środowisku komercyjnym wymaga płatnej licencji. W odróżnieniu od CsvHelper, który jest bezpłatny do użytku komercyjnego.
Jakie typy projektow skorzystaja najbardziej z IronXL?
Projekty wymagajace rozleglej manipulacji różnymi formatami plików Excel, włączajace funkcje takie jak stylizacja, sortowanie danych i obliczenia wzorow, skorzystaja najbardziej na korzystaniu z IronXL dzięki jego solidnemu zestawowi funkcji.




