
Porównanie IronXL i CsvWriter
Praca z plikami CSV może być trudnym zadaniem. Niemniej jednak, dzisiaj istnieje wiele bibliotek dostepnych do wspomagania deweloperow w tym zadaniu, bez potrzeby instalowania Microsoft Excel.
W tym artykułe omówimy i porównamy sposoby programowej pracy z dokumentami Microsoft Excel w technologiach C# .NET, zarówno w formacie CSV, jak i standardowym formacie Excel, przy użyciu dwóch najpopularniejszych bibliotek: IronXL i CSVWriter.
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.
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 arkusza kalkulacyjnego ["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.
CSVWriter
Biblioteka .NET do tworzenia plików CSV. Niezwykle szybkie, elastyczne i łatwe w użyciu. Obsługuje tworzenie obiektów klas niestandardowych.
Funkcje CsvWriter
- Szybkie: kompiluje klasy na żywo dla niezwykle szybkiej wydajności
- Elastyczna: konserwatywna przy pisaniu, liberalna przy czytaniu
- Łatwy w użyciu: odczyt i zapis 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 na pobranie i zainstalowanie biblioteki IronXL C# jest wykonanie ponizszych krokow w celu zainstalowania pakietu IronXLNuGet przez Developer Command Prompt.
- Otwórz wiersz poleceń programisty — zazwyczaj znajduje się on w folderze Visual Studio.
- Wpisz następujące polecenie:
- 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;Imports IronXLGotowe! IronXL jest pobrany, zainstalowany i gotowy do użycia. Jednak zanim to zrobimy, powinniśmy zainstalować CsvHelper.
3. Instalacja CSVWriter
3.1. Korzystanie z konsoli menedżera pakietów NuGet
Aby korzystać z CSVWriter, należy pobrać i zainstalować bibliotekę CsvHelper C#. Aby to zrobic, wykonaj ponizsze kroki w celu zainstalowania pakietu NuGet przez Developer Command Prompt.
- Otwórz wiersz poleceń programisty — zazwyczaj znajduje się on w folderze Visual Studio.
- Wpisz następujące polecenie:
- Naciśnij Enter
- To pobierze i zainstaluje pakiet
- Ponownie załaduj swój projekt Visual Studio i zacznij z niego korzystać
- Sprawdź szczegóły metody CsvHelper.CsvWriter w celu wdrożenia
3.2. Pobieranie bezpośrednie
Pobierz ze strony 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 wykonania obliczeń może być trudnym zadaniem, ale IronXL zapewnia całkiem dobrą i łatwą opcję, aby to osiągnąć, i to bez użycia programu 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 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")4.2. Odczyt i manipulacja przekonwertowanymi plikami CSV przy użyciu IronXL
Klasa IronXL WorkBook reprezentuje arkusz programu Excel. Aby otworzyć plik Excel za pomocą języka C#, używamy metody WorkBook.Load i podajemy ś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
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")Kazdy WorkBook moze zawierac wiele obiektow 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 Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");' Open 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.
For Each cell In worksheet("A2:A10")
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text)
Next cellPo załadowaniu i przeczytaniu skoroszytu oraz arkusza można użyć poniższego przykładowego kodu, aby wprowadzić zmiany w formułach lub zastosować je do określonych komórek. Kod wygląda następująco:
// 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()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 przy użyciu metody SaveAsCsv.
// 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.csv5. Praca z danymi CSV przy użyciu CSVWriter
Zapisywanie danych do pliku CSV jest powszechną operacją. Metoda CSVHelper CSVWriter z podanym separatorem obsługuje wszystkie znaki i znaki nowej linii w bardzo prostym programie do zapisywania plików CSV wydanym dla języka C#. W tym miejscu przyjrzymy się, jak zapisywać dane za pomocą CSVWriter.
5.1. Utwórz prostą aplikację konsolową
Stwórz prostą aplikację konsolową CSVWriter z podanym separatorem, korzystając z Visual Studio. Po utworzeniu projektu następnym krokiem jest utworzenie klasy Person:
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 ClassW metodzie Main stwórzmy teraz listę obiektów Person, którą zapiszemy do pliku 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" }
};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"
}
}5.2. Pisanie do pliku CSV w C# z ustawieniami domyslnymi
CsvHelper stał się standardowym sposobem zapisywania plików CSV w języku C# przy użyciu metody CSVWriter i jest bardzo łatwy w użyciu:
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 Using5.3. Dodawanie danych
Musimy pamiętać, że za każdym razem, gdy uruchomimy nasz program, stare pliki CSV zostaną nadpisane. Czasami chcemy, aby dane zostały dołączone na końcu pliku, zamiast nadpisywać istniejące dane. CSVWriter nie udostępnia metody do tego celu, ponieważ otwieranie/zapisywanie pliku nie leży w zakresie odpowiedzialności CSVWriter przy użyciu podanego separatora. Możemy to osiągnąć, używając obiektu FileStream, a następnie tworząc nasz StreamWriter przy użyciu tego obiektu FileStream. Chociaż nie wchodzi to w zakres niniejszego artykułu, pokażę, jak to zrobić, ponieważ jest to integralna część każdej aplikacji.
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 UsingDodawanie danych do istniejącego pliku jest jednak trudne, ponieważ podczas dodawania kolejność może ulec zmianie lub możemy dodać nowe właściwości. Należy o tym pamiętać podczas dodawania treści.
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.
CSVWriter z dostarczonym separatorem to element rozdzielany przecinkami i całkowicie darmowy do użytku komercyjnego.
7. Podsumowanie i wnioski
Podsumowanie
IronXL to kompletna biblioteka oferująca wszystko, czego potrzebujesz do manipulowania plikami Excel. Umożliwia konwersję różnych formatów do XLSX, a także z XLSX do innych formatów, takich jak CSV. Ta wzajemna konwersja zapewnia użytkownikom elastyczność w łatwym manipulowaniu innymi formatami plików.
Z drugiej strony, CSVWriter działa wyłącznie z formatami plików CSV i oferuje bardzo ograniczone opcje. Użytkownicy nie mogą przełączać się między różnymi formatami plików, podczas gdy w przypadku IronXL jest to możliwe. Wsystkie przykladowe kody sa dostepne w dokumentacji CsvHelper. Niniejszy dokument zawiera wytyczne dotyczące korzystania z CSVWriter w projekcie.
Wnioski
IronXL ma wyraźną przewagę nad CSVHelper.CSVWriter, ponieważ obsługuje wiele formatów. Ponadto można stosować formuły i style według własnego uznania, podczas gdy CsvHelper pozwala jedynie na odczyt i zapis plików CSV, przy czym opcje są ograniczone. Ponadto nie można dodawać nowych rekordów do istniejącego pliku CSV, ponieważ spowoduje to po prostu nadpisanie poprzednich wpisów.

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.
Powiązane artykuły



