Przejdź do treści stopki
PORóWNAJ Z INNYMI KOMPONENTAMI

Porównanie IronXL i CsvWriter

Working with CSV files can be a challenging task. However, today there are many libraries available to help developers with this task, and without the need to have Microsoft Excel installed.

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.

Biblioteka IronXL to wiodąca biblioteka arkuszy kalkulacyjnych Excel dla C#, obsługująca platformy .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

  • Fast: compiles classes on the fly for extremely fast performance
  • Flexible: conservative when writing, liberal when reading
  • Easy to use: reading and writing are as simple as GetRecords<t>() and WriteRecords(records)
  • Highly configurable
  • Linux mode
  • Low memory usage

1. Utwórz aplikację konsolową

Aby utworzyć aplikację konsolową, wykonaj następujące kroki:

  • Start the Visual Studio 2022 IDE.
  • Click on "Create new project".
  • Na stronie "Utwórz nowy projekt" wybierz C# z listy rozwijanej języków, Windows z **listy platform oraz Console z listy "Typy projektów**".
  • Wybierz aplikację SelectConsole (.NET Framework) spośród wyświetlonych szablonów projektów.
Csvhelper Alternatives 1 related to 1. Utwórz aplikację konsolową

Create Project - Console Application

  • Kliknij Dalej.
  • Na ekranie "Dodatkowe informacje" określ wersję frameworka, której chcesz używać. W tym przykładzie użyjemy .NET Framework 4.8.
Csvhelper Alternatives 2 related to 1. Utwórz aplikację konsolową

Create Project - .NET Framework

  • Kliknij "Utwórz", aby zakończyć proces.

The project is now created and we are almost ready to test the libraries. 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:

  1. Using Visual Studio with NuGet packages
  2. Pobierz pakiet NuGet bezpośrednio
  3. Manually Install with the 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ń.

Csvhelper Alternatives 3 related to 2.1. Korzystanie z programu Visual Studio z pakietami NuGet

Select-Manage-NuGet-Package

  • Now, from the browse tab -> search for IronXl.Excel -> Install
Csvhelper Alternatives 4 related to 2.1. Korzystanie z programu Visual Studio z pakietami NuGet

Search for IronXL

  • And we are done.

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:

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:
    Install-Package IronXl.Excel
  • Press Enter
  • This will download and install the package
  • Reload your Visual Studio project and begin using it

2.4. Dodaj niezbędne dyrektywy using

  1. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy plik Program.cs, a następnie kliknij opcję Wyświetl kod.
  2. Dodaj następujące dyrektywy using na początku pliku kodu:
using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

Gotowe! IronXL jest pobrany, zainstalowany i gotowy do użycia. However, before that, we should install CsvHelper.

3. Instalacja CSVWriter

3.1. Using the NuGet Package Manager Console

Aby korzystać z CSVWriter, należy pobrać i zainstalować bibliotekę CsvHelper C#. Aby to zrobić, wykonaj poniższe kroki, aby zainstalować pakiet NuGet za pomocą wiersza poleceń programisty.

  • Otwórz wiersz poleceń programisty — zazwyczaj znajduje się on w folderze Visual Studio.
  • Wpisz następujące polecenie:
    Install-Package CsvHelper -Version 27.2.1
  • Press Enter
  • This will download and install the package
  • Reload your Visual Studio project and begin using it
  • Sprawdź szczegóły metody CsvHelper.CsvWriter w celu wdrożenia

3.2. Direct Download

Download from the NuGet website: https://www.nuget.org/packages/CsvHelper/

4. Working with CSV Files using IronXL

A comma-separated values (CSV) file is a delimited text file that uses a comma to separate values. Each line of the file is a data record. 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. Let's first convert a CSV file to a normal Excel file.

4.1. Converting a CSV File to Excel Format

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
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. Read and Manipulate Converted CSV Files using IronXL

Klasa IronXLWorkBook 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
var workbook = WorkBook.Load(@"Spreadsheets\\sample.xlsx");
' Load WorkBook
Dim workbook = WorkBook.Load("Spreadsheets\\sample.xlsx")
$vbLabelText   $csharpLabel

Każdy obiekt 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 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

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

Po 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();
' 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. Saving the Excel document back to CSV File

Writing CSV files is an easy process with 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
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. 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 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

W 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" }
};
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. Zapisywanie do pliku CSV w języku C# przy użyciu ustawień domyślnych

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 (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. 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 odpowiedziąlnoś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);
}
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

Dodawanie 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. Licensing

IronXL is an openly commercial C# Excel library. It is free for development and can always be licensed for commercial deployment.Licenses are availablefor single-project use, single developers, agencies, and global corporations, as well as SaaS and OEM redistribution. 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). The Lite package starts from $799.

CSVWriter z dostarczonym separatorem to element rozdzielany przecinkami i całkowicie darmowy do użytku komercyjnego.

7. Summary and Conclusion

Summary

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. All the code samples can be found in the CsvHelper documentation files. 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.

Często Zadawane Pytania

Jakie są alternatywy dla CSVWriter do obsługi dokumentów Excel w C#?

IronXL to doskonała alternatywa dla CSVWriter do obsługi dokumentów Excel w C#. Pozwala odczytywać, edytować i eksportować różne formaty Excel, takie jak XLS, XLSX, CSV i TSV, nie wymagając Microsoft Excel.

Jak mogę przekonwertować plik CSV na format Excel, używając biblioteki .NET?

Używając IronXL, można łatwo przekonwertować plik CSV na format Excel, ładując CSV do skoroszytu i następnie zapisując go jako plik XLSX. Ten proces obejmuje proste polecenia kodu do manipulacji i zapisywania plików.

Jakie korzyści oferuje IronXL w porównaniu do CSVWriter?

IronXL oferuje wiele korzyści w porównaniu do CSVWriter, w tym obsługę wielu formatów plików, możliwość stosowania formuł Excel oraz zaawansowane funkcjonalności, takie jak sortowanie danych i stylizacja. W przeciwieństwie do tego, CSVWriter jest ograniczony do obsługi plików CSV.

Jak zainstalować IronXL w moim projekcie C#?

IronXL można zainstalować w projekcie C# za pomocą Menedżera pakietów NuGet w Visual Studio. Alternatywnie, można pobrać pakiet NuGet lub ręcznie zainstalować bibliotekę DLL przez Wiersz poleceń dewelopera.

Czy IronXL może być używany w środowiskach .NET Core i Azure?

Tak, IronXL obsługuje wiele platform, w tym .NET Core i Azure, co czyni go wszechstronnym wyborem do tworzenia aplikacji wymagających manipulacji plikami Excel w różnych środowiskach.

Czy można zapisywać obiekty klas użytkownika do pliku CSV za pomocą CSVWriter?

Tak, CSVWriter obsługuje zapisywanie obiektów klas użytkownika do pliku CSV. Zapewnia elastyczne i łatwe w użyciu podejście do efektywnego zapisywania danych podczas pracy z plikami CSV.

Jakie są wymagania licencyjne przy używaniu IronXL w aplikacjach komercyjnych?

IronXL wymaga licencji do użytku komercyjnego. Jest darmowy do celów rozwojowych, ale dostępne są różne licencje w zależności od potrzeb wdrożeniowych, czy to dla pojedynczych projektów, czy aplikacji na poziomie przedsiębiorstwa.

Jak IronXL obsługuje formuły Excel?

IronXL pozwala stosować i manipulować formułami Excel w ramach arkuszy kalkulacyjnych, oferując solidne funkcje dla dynamicznego obliczania i analizy danych bezpośrednio w aplikacjach C#.

Jakie są częste problemy z rozwiązywaniem problemów podczas używania IronXL?

Powszechne problemy z rozwiązywaniem problemów z IronXL mogą obejmować zgodność formatu plików, niespójności typu danych lub błędy instalacji. Upewnienie się, że odniesienia do projektu są prawidłowo ustawione i weryfikacja formatów danych mogą pomóc w rozwiązaniu tych problemów.

Czy IronXL może dodawać dane do istniejącego pliku Excel?

Tak, IronXL może dodawać dane do istniejącego pliku Excel. Pozwala otworzyć istniejący skoroszyt, zmodyfikować go poprzez dodanie nowych danych, a potem zapisać zmiany bez nadpisywania istniejącej zawartości.

Jordi Bardia
Inżynier oprogramowania
Jordi jest najbardziej biegły w Pythonie, C# i C++. Kiedy nie wykorzystuje swoich umiejętności w Iron Software, programuje gry. Dzieląc odpowiedzialność za testowanie produktów, rozwój produktów i badania, Jordi wnosi ogromną wartość do ciągłej poprawy produktów. Różnorodne doświadczenia ...
Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie