using IronXL;
using System;
using System.Linq;
// Supported for XLSX, XLS, XLSM, XLTX, CSV and TSV
WorkBook workBook = WorkBook.Load("sample.xlsx");
// Select worksheet at index 0
WorkSheet workSheet = workBook.WorkSheets[0];
// Get any existing worksheet
WorkSheet firstSheet = workBook.DefaultWorkSheet;
// Select a cell and return the converted value
int cellValue = workSheet["A2"].IntValue;
// Read from ranges of cells elegantly.
foreach (var cell in workSheet["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Calculate aggregate values such as Min, Max and Sum
decimal sum = workSheet["A2:A10"].Sum();
// Linq compatible
decimal max = workSheet["A2:A10"].Max(c => c.DecimalValue);
Wie Sie vielleicht wissen, ist Excel die wahrscheinlich am häufigsten verwendete Tabellenkalkulationsanwendung der Welt. Zu den Nutzern gehören sowohl Entwickler als auch die allgemeine Bevölkerung, aber es sind die Entwickler, die sich wahrscheinlich mehr für diesen Artikel interessieren werden. Ursprünglich gab es nicht viele Möglichkeiten für Entwickler, mit Excel in ihren verschiedenen Anwendungen zu arbeiten. Allerdings gab es VBA(Visual Basic für Anwendungen) die in die Office-Suite integriert ist, mit der Sie jedes Office-Produkt nach Ihren Bedürfnissen bearbeiten können.
Entwickler verwendeten VBA in Excel, um ihre Interaktionen mit Excel und seinen Daten, sogar seine visuellen Fähigkeiten, anzupassen. Aber irgendwann war das nicht mehr genug. Die Entwickler wollten mehr, und so begannen sie mit Office.Interop.
In diesem Artikel werde ich zwei sehr gute Excel-Bibliotheken vergleichen, die nicht auf Office.Interop angewiesen sind, um mit Excel zu arbeiten. Sie sind:
IronXL
NPOI
Sie werden sehen und lernen, was die einzelnen Excel-Bibliotheken können, und dann die beiden anhand von Codebeispielen und Schritt-für-Schritt-Tutorials vergleichen. In diesem Artikel können zwar nicht alle Funktionen beider Excel-Bibliotheken behandelt werden, aber es werden die gängigsten und beliebtesten Verwendungszwecke der beiden Bibliotheken erläutert.
Instanziieren Sie XSSFWorkbook objekt zum Speichern der Excel-Datei
Spezifisches Arbeitsblatt erhalten mit GetSheetAt methode
Zugriff auf jede Zeile durch Übergabe des Zeilenindex an GetRow methode
Zugriff auf jede Zelle in der Zeile mit GetCell methode
Was ist NPOI?
NPOI ist die .NET-Version des POI-Java-Projekts unter http://poi.apache.org/. POI ist ein Open-Source-Projekt, mit dem Sie xls-, doc- und ppt-Dateien lesen und schreiben können. Es hat eine breite Palette von Anwendungen.
Sie können es zum Beispiel verwenden, um:
Generieren Sie einen Excel-Bericht, ohne dass die Microsoft Office Suite auf Ihrem Server installiert sein muss, und effizienter als der Aufruf von Microsoft Excel ActiveX im Hintergrund
Extrahieren Sie Text aus Office-Dokumenten, um eine Volltextindizierungsfunktion zu implementieren(meistens wird diese Funktion verwendet, um Suchmaschinen zu erstellen)
Bilder aus Office-Dokumenten extrahieren
Excel-Blätter erzeugen, die Formeln enthalten
NPOI und Excel
NPOI ist eine C#-Portierung des POI Java projekt von Apache. Es ist kostenlos und quelloffen. Außerdem ist kein Interop erforderlich, d. h., die Benutzer müssen Excel nicht installiert haben, damit die Anwendung des Entwicklers damit funktioniert.
IronXL und Excel
IronXL ist eine Excel-API für VB und C#. Mit IronXL können Sie Excel-Tabellendateien in .NET lesen, bearbeiten und erstellen.
Gemeinsame Bibliotheksfunktionen für die NPOI- und IronXL-Excel-Bibliotheken
Visuelle Stile für Zellen Schriftart, Größe, Hintergrundmuster, Rahmen, Ausrichtung und Zahlenformate.
Berechnung der Formel
Formeln
Validierung von Daten
Validierung von Daten
Bedingte Formatierung
Bedingte Formatierung
Bilder
Bilder
Diagramme
Diagramme
Tabelle 1 - Vergleich der Merkmale
Installation von IronXL und NPOI
Sie können beide Bibliotheken durch manuelles Herunterladen, über NuGet oder mit dem NuGet Package Manager in Visual Studio installieren. Hier ist ein kurzer Überblick.
NPOI-Installation
Installation von NPOI mit NuGet
Um NPOI über NuGet zu installieren, öffnen Sie die Eingabeaufforderung von Visual Studio Developer und geben Sie Folgendes ein:
Abbildung 1 - NuGet NPOI-Installation
Visual Studio NuGet-Paketmanager und NPOI
Führen Sie die folgenden Schritte aus, um IronXL oder NPOI über den NuGet Package Manager in Visual Studio zu installieren:
Klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer
Wählen Sie NuGet-Pakete verwalten
Suchen Sie nach Ihrem Paket
Installieren klicken
Abbildung 2 - NuGet-Paketmanager für NPOI
IronXL-Installation
Herunterladen von IronXL
Um IronXL herunterzuladen, navigieren Sie zu folgendem Link URL und klicken Sie auf die Schaltfläche "Herunterladen".
Abbildung 3 - IronXL herunterladen
Installation von IronXL mit NuGet
Um IronXL über NuGet zu installieren, öffnen Sie die Eingabeaufforderung von Visual Studio Developer und geben Sie Folgendes ein:
Abbildung 4 - NuGet IronXL Installation
Visual Studio NuGet-Paketmanager und IronXL
Führen Sie die folgenden Schritte aus, um IronXL über den NuGet Package Manager in Visual Studio zu installieren:
Klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer
Wählen Sie NuGet-Pakete verwalten
Suchen Sie nach Ihrem Paket
Installieren klicken
Abbildung 5 - NuGet-Paketverwaltung für IronXL
Lesen von und Schreiben in eine Excel-Datei mit NPOI und IronXL
Lesen einer Excel-Datei mit NPOI
Der folgende Code zeigt, wie eine Excel-Datei gelesen und ihr Inhalt mit NPOI angezeigt werden kann. Fügen Sie den folgenden Code hinzu und schließen Sie die erforderlichen Namespaces ein:
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
Der folgende Code liest eine vorhandene Excel-Datei und zeigt sie in einer Datengitteransicht an.
public void ReadExcelNPOI()
{
DataTable dtTable = new DataTable();
List<string> lstRows = new List<string>();
ISheet objWorksheet;
string strPath = @"c:\temp\NPOI_Test.XLSX";
using (var fStream = new FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
fStream.Position = 0;
XSSFWorkbook objWorkbook = new XSSFWorkbook(fStream);
objWorksheet = objWorkbook.GetSheetAt(0);
IRow objHeader = objWorksheet.GetRow(0);
int countCells = objHeader.LastCellNum;
for (int j = 0; j < countCells; j++)
{
ICell objCell = objHeader.GetCell(j);
if (objCell == null
string.IsNullOrWhiteSpace(objCell.ToString())) continue;
{
dtTable.Columns.Add(objCell.ToString());
}
}
for (int i = (objWorksheet.FirstRowNum + 1); i <= objWorksheet.LastRowNum; i++)
{
IRow objRow = objWorksheet.GetRow(i);
if (objRow == null) continue;
if (objRow.Cells.All(d => d.CellType == CellType.Blank)) continue;
for (int j = objRow.FirstCellNum; j < countCells; j++)
{
if (objRow.GetCell(j) != null)
{
if (!string.IsNullOrEmpty(objRow.GetCell(j).ToString()) && !string.IsNullOrWhiteSpace(objRow.GetCell(j).ToString()))
{
lstRows.Add(objRow.GetCell(j).ToString());
}
}
}
if (lstRows.Count > 0)
dtTable.Rows.Add(lstRows.ToArray());
lstRows.Clear();
}
}
dataGridView1.DataSource = dtTable;
}
private void button1_Click(object sender, EventArgs e)
{
ReadExcelNPOI();
}
public void ReadExcelNPOI()
{
DataTable dtTable = new DataTable();
List<string> lstRows = new List<string>();
ISheet objWorksheet;
string strPath = @"c:\temp\NPOI_Test.XLSX";
using (var fStream = new FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
fStream.Position = 0;
XSSFWorkbook objWorkbook = new XSSFWorkbook(fStream);
objWorksheet = objWorkbook.GetSheetAt(0);
IRow objHeader = objWorksheet.GetRow(0);
int countCells = objHeader.LastCellNum;
for (int j = 0; j < countCells; j++)
{
ICell objCell = objHeader.GetCell(j);
if (objCell == null
string.IsNullOrWhiteSpace(objCell.ToString())) continue;
{
dtTable.Columns.Add(objCell.ToString());
}
}
for (int i = (objWorksheet.FirstRowNum + 1); i <= objWorksheet.LastRowNum; i++)
{
IRow objRow = objWorksheet.GetRow(i);
if (objRow == null) continue;
if (objRow.Cells.All(d => d.CellType == CellType.Blank)) continue;
for (int j = objRow.FirstCellNum; j < countCells; j++)
{
if (objRow.GetCell(j) != null)
{
if (!string.IsNullOrEmpty(objRow.GetCell(j).ToString()) && !string.IsNullOrWhiteSpace(objRow.GetCell(j).ToString()))
{
lstRows.Add(objRow.GetCell(j).ToString());
}
}
}
if (lstRows.Count > 0)
dtTable.Rows.Add(lstRows.ToArray());
lstRows.Clear();
}
}
dataGridView1.DataSource = dtTable;
}
private void button1_Click(object sender, EventArgs e)
{
ReadExcelNPOI();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText $csharpLabel
Lesen einer Excel-Datei mit IronXL
Der folgende Code veranschaulicht, wie eine Excel-Datei gelesen und in einer Datengitteransicht mit IronXL angezeigt werden kann. Fügen Sie den folgenden Code hinzu und schließen Sie den Namespace ein:
using IronXL;
using IronXL;
Imports IronXL
$vbLabelText $csharpLabel
Beachten Sie die Einbeziehung von IronXL. Dies ist notwendig, damit IronXL funktionieren kann. Fügen Sie die nächsten Zeilen hinzu:
Private Sub button2_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim strPath As String = "c:\temp\NPOI_Test.XLSX"
Dim workbook As WorkBook = WorkBook.Load(strPath)
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
Dim dtTable = sheet.ToDataTable(True)
dataGridView1.DataSource = dtTable
End Sub
$vbLabelText $csharpLabel
Wie Sie sehen können, bedeutet das alles eine Menge weniger Arbeit.
Schlussfolgerung
Warum also IronXL? Wie Sie sehen, verfügt IronXL über eine einfach zu verwendende API, die Ihren Code sauber hält. Bibliotheken, die IronXL verwenden, rühmen sich eines sauberen, lesbaren Codes - eine Investition, die sich auszahlt, denn sie reduziert den Zeit- und Arbeitsaufwand, der nötig ist, um den Code zu verstehen, und ermöglicht es, ihn zu ändern, ohne etwas kaputt zu machen.
IronXL ist rundum intuitiver und dabei genauso leistungsfähig wie NPOI. Und natürlich erhalten Sie mit einem Lizenzschlüssel Zugang zu den wichtigsten Vorteilen einer kostenpflichtigen Software: Sie erhalten unseren professionellen Support, konsistente und zuverlässige Update-Pläne und die Möglichkeit, Funktionen von Iron Software-Support-Mitarbeitern anzufordern, die Ihnen gerne weiterhelfen. Das ist etwas, was Open Source einfach nicht bieten kann.
Jordi beherrscht vor allem Python, C# und C++. Wenn er seine Fähigkeiten bei Iron Software nicht einsetzt, programmiert er Spiele. Durch seine Mitverantwortung für Produkttests, Produktentwicklung und Forschung trägt Jordi wesentlich zur kontinuierlichen Produktverbesserung bei. Die vielseitigen Erfahrungen, die er sammelt, bieten ihm immer wieder neue Herausforderungen, und er sagt, dass dies einer seiner Lieblingsaspekte bei Iron Software ist. Jordi wuchs in Miami, Florida, auf und studierte Informatik und Statistik an der University of Florida.
< PREVIOUS Ein Vergleich zwischen IronXL und CsvHelper
NÄCHSTES > Ein Vergleich zwischen IronXL und Aspose Cells