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. Es gab jedoch VBA (Visual Basic for Applications), das in die Office Suite integriert war und mit dem Sie jedes Office-Produkt nach Ihren Bedürfnissen manipulieren konnten.
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 das XSSFWorkbook-Objekt, um eine Excel-Datei zu speichern
Holen Sie sich ein bestimmtes Arbeitsblatt mit der GetSheetAt-Methode
Zugreifen auf jede Zeile durch Übergeben des Zeilenindex an die GetRow-Methode
Zugreifen auf jede Zelle in der Zeile mit der GetCell-Methode
Was ist NPOI?
NPOI ist die .NET-Version des POI Java-Projekts auf [http://poi.apache.org/](http://poi.apache.org/" target="_blank" rel="nofollow). 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 Ihnen bei der Implementierung einer Volltext-Indexierungsfunktion zu helfen (diese Funktion wird meistens verwendet, um Suchmaschinen zu erstellen).
Bilder aus Office-Dokumenten extrahieren
Excel-Blätter erzeugen, die Formeln enthalten
NPOI und Excel
NPOI ist ein C#-Port des [POI Java](http://poi.apache.org/" target="_blank" rel="nofollow)-Projekts 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
Zellenbereiche
Tabelle 1 - Funktionsvergleich
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-Paket-Manager für NPOI
IronXL-Installation
Herunterladen von IronXL
Um IronXL herunterzuladen, gehen Sie zu dem folgenden URL und klicken Sie auf die Schaltfläche "Download".
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-Paket-Manager 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.
Regan schloss sein Studium an der University of Reading mit einem BA in Elektrotechnik ab. Bevor er zu Iron Software kam, konzentrierte er sich in seinen früheren Jobs auf einzelne Aufgaben. Was ihm bei Iron Software am meisten Spaß macht, ist das Spektrum der Aufgaben, die er übernehmen kann, sei es im Vertrieb, im technischen Support, in der Produktentwicklung oder im Marketing. Es macht ihm Spaß, die Art und Weise zu verstehen, wie Entwickler die Bibliothek von Iron Software nutzen, und dieses Wissen zu nutzen, um die Dokumentation und die Produkte kontinuierlich zu verbessern.
< PREVIOUS Ein Vergleich zwischen IronXL und CsvHelper
NÄCHSTES > Ein Vergleich zwischen IronXL und Aspose Cells