Zum Fußzeileninhalt springen
IRONXL VERWENDEN

Wie man OpenOffice Excel-Dateien in C# liest, ohne dass Excel installiert ist

Das Lesen und Verarbeiten von OpenDocument Spreadsheet (ODS)- und Excel-Dateien in C# ist unkompliziert, wenn man die richtige Bibliothek verwendet. Mit IronXL laden Sie beliebige XLS-, XLSX-, ODS- oder CSV-Dateien mit einem einzigen Methodenaufruf in ein WorkBook-Objekt – ohne Installation von Microsoft Excel, ohne COM-Registrierung und ohne Interop-Probleme. Dieser Leitfaden führt Sie durch jeden einzelnen Schritt: Installation des Pakets, Laden von Dateien, Extrahieren von typisierten Zellwerten, Arbeiten mit benannten Arbeitsblättern, Umgang mit verbundenen Zellen und Bereitstellung in Linux- oder Containerumgebungen.

Wie installiert man IronXL in einem .NET -Projekt?

Installation des NuGet -Paketmanagers

Fügen Sie IronXL über den NuGet -Paketmanager zu Ihrem Projekt hinzu. Öffnen Sie die Paketmanager-Konsole in Visual Studio und führen Sie den Befehl aus:

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

IronXL unterstützt .NET 8, .NET 9, .NET 10, .NET Framework 4.6.2+ und .NET Standard 2.0 und eignet sich daher sowohl für moderne als auch für ältere Codebasen. Nach der Installation des Pakets fügen Sie die Direktive using IronXL; am Anfang jeder Tabellenkalkulationsdatei ein, und schon können Sie Ihre erste Arbeitsmappe laden.

Für Azure Functions, Docker-Container oder auf Linux gehostete APIs ist keine zusätzliche Laufzeitkonfiguration erforderlich. Die Bibliothek bündelt alles Notwendige intern und greift nicht auf Excel-Automatisierungskomponenten zu.

Wie lädt man eine OpenOffice- oder Excel-Datei in C#?

IronXL behandelt ODS-, XLS-, XLSX- und CSV-Dateien identisch über die WorkBook.Load-Methode. Sie übergeben einen absoluten oder relativen Dateipfad, und die Bibliothek erkennt das Format anhand des Dateikopfes – nicht nur anhand der Dateiendung. Das bedeutet, dass eine Datei, die von .ods in .xlsx umbenannt wurde, weiterhin korrekt gelesen werden kann.

using IronXL;

// Load an OpenDocument Spreadsheet (.ods) produced by LibreOffice Calc or OpenOffice
WorkBook workbook = WorkBook.Load("quarterly_report.ods");

// Access the first worksheet by index
WorkSheet sheet = workbook.WorkSheets[0];

// Read a cell value
string companyName = sheet["A1"].StringValue;
int recordCount   = sheet["B1"].IntValue;

Console.WriteLine($"Company : {companyName}");
Console.WriteLine($"Records : {recordCount}");
using IronXL;

// Load an OpenDocument Spreadsheet (.ods) produced by LibreOffice Calc or OpenOffice
WorkBook workbook = WorkBook.Load("quarterly_report.ods");

// Access the first worksheet by index
WorkSheet sheet = workbook.WorkSheets[0];

// Read a cell value
string companyName = sheet["A1"].StringValue;
int recordCount   = sheet["B1"].IntValue;

Console.WriteLine($"Company : {companyName}");
Console.WriteLine($"Records : {recordCount}");
$vbLabelText   $csharpLabel

Der gleiche Aufruf funktioniert sowohl für XLSX- als auch für XLS-Dateien – Sie müssen lediglich den Pfad ändern. WorkBook.Load gibt unabhängig vom Quellformat dasselbe stark typisierte Objekt zurück, sodass der Rest Ihres Codes identisch bleibt, egal ob die Datei von Microsoft Excel, LibreOffice oder einer anderen ODF-kompatiblen Anwendung stammt.

Wie liest man jede Zeile und Zelle in einem Arbeitsblatt?

Iterieren der Zeilenkollektion

Das Durchlaufen aller Zeilen und Zellen ist die häufigste Aufgabe bei der Excel-Verarbeitung – egal ob Sie Importdaten validieren, Datensätze transformieren oder eine Berichtspipeline speisen. IronXL stellt für jede Zeile und Zelle eine Sammlung namens Rows bereit.

using IronXL;

WorkBook workbook  = WorkBook.Load("customers.xlsx");
WorkSheet worksheet = workbook.WorkSheets[0];

Console.WriteLine($"Total rows    : {worksheet.RowCount}");
Console.WriteLine($"Total columns : {worksheet.ColumnCount}");
Console.WriteLine();

foreach (var row in worksheet.Rows)
{
    foreach (var cell in row)
    {
        if (!cell.IsEmpty)
            Console.Write($"{cell.StringValue,-20}");
    }
    Console.WriteLine();
}
using IronXL;

WorkBook workbook  = WorkBook.Load("customers.xlsx");
WorkSheet worksheet = workbook.WorkSheets[0];

Console.WriteLine($"Total rows    : {worksheet.RowCount}");
Console.WriteLine($"Total columns : {worksheet.ColumnCount}");
Console.WriteLine();

foreach (var row in worksheet.Rows)
{
    foreach (var cell in row)
    {
        if (!cell.IsEmpty)
            Console.Write($"{cell.StringValue,-20}");
    }
    Console.WriteLine();
}
$vbLabelText   $csharpLabel

Die Eigenschaften RowCount und ColumnCount geben nur den gefüllten Bereich zurück – leere nachfolgende Zeilen und Spalten werden nicht berücksichtigt. Durch die Prüfung von cell.IsEmpty vor dem Lesen wird eine unnötige Verarbeitung auf dünn besetzten Blättern verhindert.

Bei großen Dateien empfiehlt sich die Verwendung von bereichsbasiertem Zugriff (worksheet["A1:D500"]) anstelle der Iteration über das gesamte Blatt. Dadurch wird die Anzahl der in den Speicher geladenen Zellen begrenzt und die Verarbeitung beschleunigt, wenn nur eine Teilmenge der Daten benötigt wird.

Wie extrahiert man typisierte Werte aus Zellen?

Typisierte Eigenschaften

Die Zellen einer realen Tabellenkalkulation enthalten Zeichenketten, ganze Zahlen, Dezimalzahlen, boolesche Werte und Datumsangaben. IronXL stellt dedizierte typisierte Eigenschaften bereit, sodass Sie niemals Rohzeichenketten manuell parsen müssen:

using IronXL;

WorkBook workbook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet   = workbook.GetWorkSheet("Products");

// Typed accessors handle conversion automatically
string  productName = sheet["A2"].StringValue;
int     quantity    = sheet["B2"].IntValue;
decimal unitPrice   = sheet["C2"].DecimalValue;
bool    inStock     = sheet["D2"].BoolValue;
DateTime? lastAudit = sheet["E2"].DateTimeValue;

Console.WriteLine($"Product  : {productName}");
Console.WriteLine($"Qty      : {quantity}");
Console.WriteLine($"Price    : {unitPrice:C}");
Console.WriteLine($"In Stock : {inStock}");
Console.WriteLine($"Audited  : {lastAudit?.ToString("d") ?? "Never"}");
using IronXL;

WorkBook workbook = WorkBook.Load("inventory.xlsx");
WorkSheet sheet   = workbook.GetWorkSheet("Products");

// Typed accessors handle conversion automatically
string  productName = sheet["A2"].StringValue;
int     quantity    = sheet["B2"].IntValue;
decimal unitPrice   = sheet["C2"].DecimalValue;
bool    inStock     = sheet["D2"].BoolValue;
DateTime? lastAudit = sheet["E2"].DateTimeValue;

Console.WriteLine($"Product  : {productName}");
Console.WriteLine($"Qty      : {quantity}");
Console.WriteLine($"Price    : {unitPrice:C}");
Console.WriteLine($"In Stock : {inStock}");
Console.WriteLine($"Audited  : {lastAudit?.ToString("d") ?? "Never"}");
$vbLabelText   $csharpLabel

Wenn eine Zelle eine Formel enthält, wertet IronXL diese aus und gibt das berechnete Ergebnis über die gleichen typisierten Eigenschaften zurück. Sie müssen keine separate Auswertungsmethode aufrufen. Für Zellen, die leer sein könnten oder einen inkompatiblen Typ enthalten, gibt die Bibliothek den Standardwert für diesen Typ zurück, anstatt eine Ausnahme auszulösen, was die Logik der Eingabevalidierung vereinfacht.

IronXL Zellenwerteigenschaften und ihre entsprechenden .NET -Typn
Eigenschaft .NET -Typ Gibt zurück, wenn leer Anmerkungen
`StringValue` `String` Leerer String Immer sicher; wandelt jede Zelle in Text um
`IntValue` `int` `0` Schneidet Dezimalzahlen ab
`DecimalValue` `decimal` `0m` Erhält die Genauigkeit der Finanzdaten
`DoubleValue` `Doppel` `0.0` Verwendung für wissenschaftliche oder statistische Werte
`BoolValue` `bool` `false` Liest Excel-WAHR/FALSCH-Zellen
`DateTimeValue` `DateTime?` `null` Nullable -- vor der Verwendung prüfen

Wie arbeitet man mit mehreren benannten Arbeitsblättern?

Zugriff über Name, Index oder Iteration

Unternehmensweite Tabellenkalkulationen enthalten oft mehrere benannte Tabellenblätter – eines pro Monat, eines pro Region oder eines pro Produktlinie. IronXL bietet Ihnen mehrere Möglichkeiten, darauf zuzugreifen:

using IronXL;

WorkBook workbook = WorkBook.Load("annual_sales.xlsx");

// Option 1: access by name (throws if the sheet does not exist)
WorkSheet januarySheet = workbook.GetWorkSheet("January");

// Option 2: iterate all sheets in the workbook
foreach (WorkSheet ws in workbook.WorkSheets)
{
    Console.WriteLine($"Sheet: {ws.Name}  |  Rows: {ws.RowCount}");

    // Read the header row from each sheet
    string header = ws["A1"].StringValue;
    Console.WriteLine($"  Header: {header}");
}

// Option 3: access by zero-based index
WorkSheet lastSheet = workbook.WorkSheets[workbook.WorkSheets.Count - 1];
Console.WriteLine($"Last sheet: {lastSheet.Name}");
using IronXL;

WorkBook workbook = WorkBook.Load("annual_sales.xlsx");

// Option 1: access by name (throws if the sheet does not exist)
WorkSheet januarySheet = workbook.GetWorkSheet("January");

// Option 2: iterate all sheets in the workbook
foreach (WorkSheet ws in workbook.WorkSheets)
{
    Console.WriteLine($"Sheet: {ws.Name}  |  Rows: {ws.RowCount}");

    // Read the header row from each sheet
    string header = ws["A1"].StringValue;
    Console.WriteLine($"  Header: {header}");
}

// Option 3: access by zero-based index
WorkSheet lastSheet = workbook.WorkSheets[workbook.WorkSheets.Count - 1];
Console.WriteLine($"Last sheet: {lastSheet.Name}");
$vbLabelText   $csharpLabel

Wenn der Blattname zur Entwurfszeit bekannt ist, ist GetWorkSheet die eindeutigste Option. Bei der dynamischen Verarbeitung – bei der die Blattnamen aus Benutzereingaben oder Konfigurationen stammen – verhindert das Durchlaufen der Sammlung WorkSheets fest codierte Annahmen und ermöglicht die Verarbeitung von Arbeitsmappen mit unterschiedlicher Anzahl von Blättern.

Wie geht man mit verbundenen Zellen und formatierten Bereichen um?

In Berichten und Dashboards werden häufig verbundene Zellen für Überschriften, gruppierte Beschriftungen und Zusammenfassungszeilen verwendet. IronXL liest den Wert aus der Zelle oben links eines zusammengeführten Bereichs genau so, wie er in Excel angezeigt wird:

using IronXL;

WorkBook workbook = WorkBook.Load("report_with_merges.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// The merged region A1:D1 stores its value in cell A1
string reportTitle = sheet["A1"].StringValue;
Console.WriteLine($"Report title : {reportTitle}");

// Read cell formatting metadata
var titleCell = sheet["A1"];
Console.WriteLine($"Bold         : {titleCell.Style.Font.Bold}");
Console.WriteLine($"Font size    : {titleCell.Style.Font.Height}");

// Scan an entire column for non-empty section headers
foreach (var cell in sheet["A1:A100"])
{
    if (!cell.IsEmpty && cell.Style.Font.Bold)
        Console.WriteLine($"Section header at {cell.AddressString}: {cell.StringValue}");
}
using IronXL;

WorkBook workbook = WorkBook.Load("report_with_merges.xlsx");
WorkSheet sheet   = workbook.DefaultWorkSheet;

// The merged region A1:D1 stores its value in cell A1
string reportTitle = sheet["A1"].StringValue;
Console.WriteLine($"Report title : {reportTitle}");

// Read cell formatting metadata
var titleCell = sheet["A1"];
Console.WriteLine($"Bold         : {titleCell.Style.Font.Bold}");
Console.WriteLine($"Font size    : {titleCell.Style.Font.Height}");

// Scan an entire column for non-empty section headers
foreach (var cell in sheet["A1:A100"])
{
    if (!cell.IsEmpty && cell.Style.Font.Bold)
        Console.WriteLine($"Section header at {cell.AddressString}: {cell.StringValue}");
}
$vbLabelText   $csharpLabel

Der Style Eigenschaftsbaum spiegelt die Struktur der OOXML SpreadsheetML Spezifikation wider, sodass sich die Eigenschaftsnamen vertraut anfühlen, wenn Sie bereits mit dem Open XML SDK gearbeitet haben. IronXL verpackt diese ganze Komplexität jedoch in eine übersichtliche API, die keinerlei XML-Manipulation Ihrerseits erfordert.

Wie importiert man CSV-Dateien mit der gleichen API?

CSV-Dateien, die durch Datenbankexporte, CRM-Systeme und ältere Anwendungen erzeugt werden, können über denselben WorkBook.Load-Aufruf gelesen werden. IronXL leitet das Trennzeichen aus dem Dateiinhalt ab:

using IronXL;

// Load a comma-separated values file -- same method, same API
WorkBook csvWorkbook  = WorkBook.Load("export.csv");
WorkSheet csvSheet    = csvWorkbook.DefaultWorkSheet;

Console.WriteLine($"CSV rows loaded: {csvSheet.RowCount}");

// Process rows exactly like any other worksheet
foreach (var row in csvSheet.Rows)
{
    string id   = row[0].StringValue;
    string name = row[1].StringValue;
    Console.WriteLine($"{id,-10} {name}");
}
using IronXL;

// Load a comma-separated values file -- same method, same API
WorkBook csvWorkbook  = WorkBook.Load("export.csv");
WorkSheet csvSheet    = csvWorkbook.DefaultWorkSheet;

Console.WriteLine($"CSV rows loaded: {csvSheet.RowCount}");

// Process rows exactly like any other worksheet
foreach (var row in csvSheet.Rows)
{
    string id   = row[0].StringValue;
    string name = row[1].StringValue;
    Console.WriteLine($"{id,-10} {name}");
}
$vbLabelText   $csharpLabel

Nach dem Laden können Sie die Daten mit csvWorkbook.SaveAs("output.xlsx") als XLSX speichern. Dies ist ein gängiges Muster für CSV-zu-Excel-Konvertierungspipelines – eine CSV-Datei empfangen, sie mit berechneten Spalten oder Formatierungen anreichern und dem Benutzer einen formatierten XLSX-Bericht zurückgeben.

Bei tabulatorgetrennten Dateien oder benutzerdefinierten Trennzeichen verwenden Sie WorkBook.LoadCSV("file.tsv", fileFormat: ExcelFileFormat.TSV), um das Format explizit anzugeben.

Unterstützte Eingabedateiformate in IronXL
Format Verlängerung Produziert von Anmerkungen
XLSX `.xlsx` Excel 2007+, LibreOffice Standardmäßiges modernes Format; XML-basiert
XLS `.xls` Excel 97–2003 Binärformat; vollständige Lese-/Schreibunterstützung
ODS `.ods` LibreOffice, OpenOffice OpenDocument-Tabellenkalkulationsstandard
CSV `.csv` Jede Anwendung Trennzeichen automatisch erkannt; keine Formatierung
TSV `.tsv` Datenbankexporte Tabulatorgetrennt; Format explizit angeben

Wie schneidet IronXL im Vergleich zu Microsoft.Office.Interop.Excel ab?

Interop, Open XML SDK und IronXL im Vergleich

Die gebräuchlichste Alternative zu IronXL für die Excel-Automatisierung in .NET ist Microsoft.Office.Interop.Excel . Das Verständnis der Vor- und Nachteile hilft Ihnen bei der Auswahl des richtigen Werkzeugs für Ihr Projekt.

Microsoft Interop kapselt das Excel-COM-Objektmodell. Das bedeutet, dass Excel auf jedem Rechner installiert sein muss, auf dem Ihr Code ausgeführt wird – einschließlich Webserver, Build-Agenten und Cloud-VMs. Die Verwaltung des COM-Objektlebenszyklus erfolgt manuell: Sie müssen jedes Range, Worksheet und Workbook Objekt explizit freigeben, da sich sonst Excel-Prozesse im Hintergrund ansammeln und Speicher verbrauchen, bis der Server neu gestartet wird. Auch die Lizenzierung gibt Anlass zur Sorge: Die Office-EULA verbietet in vielen Fällen die serverseitige Automatisierung.

IronXL umgeht all diese Einschränkungen. Es handelt sich um eine rein verwaltete Bibliothek ohne COM-Abhängigkeit. Das WorkBook-Objekt ist eine Standard .NET Klasse; Die automatische Speicherbereinigung (Garbage Collection) übernimmt die Aufräumarbeiten. Sie können denselben Code auf einem Entwicklerlaptop, einem Azure App Service, einem Docker-Container oder einem Raspberry Pi mit Linux ausführen.

Das Open XML SDK von Microsoft ist eine weitere Alternative. Es ermöglicht den direkten Zugriff auf das OOXML-Dateiformat ohne Excel-Kenntnisse, arbeitet aber auf einer sehr niedrigen Ebene – man bearbeitet XML-Elemente direkt. Das Auslesen eines einzelnen Zellenwerts erfordert das Navigieren in gemeinsam genutzten Zeichenfolgentabellen, Zellbezügen und Stilindizes. IronXL fasst all das in dem einzeiligen sheet["A1"].StringValue-Aufruf zusammen, der in diesem Leitfaden durchgehend gezeigt wird.

Wie implementiert man die Excel-Verarbeitung unter Linux und Docker?

Bei Server-Implementierungen erweist sich die Unabhängigkeit von IronXL von Excel als besonders wertvoll. Derselbe Code, den Sie unter Windows schreiben, läuft unverändert unter Ubuntu, Alpine Linux oder macOS. Für containerisierte Bereitstellungen ist in Ihrer Dockerfile keine spezielle Konfiguration erforderlich:

# Standard .NET runtime image -- no Office packages needed
FROM mcr.microsoft.com/dotnet/runtime:10.0
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "ExcelProcessor.dll"]
# Standard .NET runtime image -- no Office packages needed
FROM mcr.microsoft.com/dotnet/runtime:10.0
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "ExcelProcessor.dll"]
SHELL

Für Azure Functions und AWS Lambda funktioniert IronXL innerhalb der verwalteten Laufzeitumgebung ohne zusätzliche Konfiguration. Der Aufwand beim Kaltstart ist minimal, da kein COM-Initialisierungsschritt erforderlich ist.

Thread-Sicherheit ist integriert: Mehrere Threads können gleichzeitig unterschiedliche WorkBook-Instanzen öffnen, ohne dass eine Koordination erforderlich ist. Wenn Sie Tausende von Dateien parallel verarbeiten müssen – beispielsweise in einem Hintergrundprozess, der vom Benutzer hochgeladene Tabellenkalkulationen verarbeitet – können Sie Parallel.ForEach oder Task.WhenAll über einen Pool von WorkBook Instanzen hinweg verwenden, ohne dass die Gefahr einer Beschädigung besteht.

Der Speicherverbrauch bleibt vorhersehbar, da IronXL bei der Initialisierung nur das angeforderte Arbeitsblatt in den Speicher lädt und nicht die gesamte Arbeitsmappe. Bei sehr großen Dateien ist dieser Unterschied wichtig: Eine Arbeitsmappe mit zehn 50-MB-Blättern benötigt nicht 500 MB RAM, nur um ein einziges Blatt zu lesen. Die IronXL Leistungsdokumentation enthält zusätzliche Strategien für den Umgang mit Szenarien der Verarbeitung großer Dateimengen.

Was sind Ihre nächsten Schritte?

Der schnellste Weg, IronXL in Ihrem Projekt zu validieren, besteht darin, das NuGet Paket zu installieren und die Beispiele in diesem Leitfaden mit einer echten Datei aus Ihrer Umgebung auszuführen. Mit einer kostenlosen Testlizenz werden alle Funktionen freigeschaltet, ohne dass Codeänderungen erforderlich sind, wenn Sie bereit für den Produktiveinsatz sind.

Entdecken Sie verwandte IronXL -Funktionen, die das Lesen von Dateien ergänzen:

Bei Fragen zur Lizenzierung, zur plattformübergreifenden Unterstützung oder zu spezifischen Dateiformatanforderungen steht Ihnen das IronXL Supportteam per Live-Chat und E-Mail zur Verfügung.

Starten Sie jetzt mit IronXL.
green arrow pointer

Häufig gestellte Fragen

Wie kann ich OpenOffice Excel-Dateien in C# lesen, ohne dass Excel installiert ist?

Mit der IronXL -Bibliothek können Sie OpenOffice-Excel-Dateien in C# lesen, ohne dass Excel auf Ihrem Server installiert sein muss. Sie ermöglicht das effiziente Laden von XLS-, XLSX-, ODS- und CSV-Dateien mit einem einzigen Aufruf der Methode `WorkBook.Load`.

Welche Arten von Excel-Dateien können mit IronXL verarbeitet werden?

IronXL unterstützt die Verarbeitung verschiedener Excel-Dateiformate, darunter XLS, XLSX, ODS (OpenDocument Spreadsheet) und CSV-Dateien, wodurch es vielseitig für verschiedene Tabellenkalkulationsanwendungen wie LibreOffice und OpenOffice einsetzbar ist.

Warum sollten Entwickler IronXL anstelle von Microsoft Interop zum Lesen von Excel-Dateien verwenden?

IronXL bietet eine einfachere und effizientere Möglichkeit zur Bearbeitung von Excel-Dateien, ohne dass Microsoft Excel oder COM Interop erforderlich sind. Dadurch werden Komplexität und Aufwand auf Produktionsservern reduziert und Linux- und Docker-Bereitstellungen ermöglicht.

Kann IronXL auch Dateien verarbeiten, die in anderen Tabellenkalkulationsprogrammen als MS Excel erstellt wurden?

Ja, IronXL kann Dateien aus anderen Tabellenkalkulationsprogrammen wie OpenOffice Calc und LibreOffice Calc lesen und verarbeiten und ist somit ein flexibles Werkzeug für Entwickler, die mit ODS- und ODF-kompatiblen Formaten arbeiten.

Ist es notwendig, Excel auf den Produktionsservern zu installieren, um IronXL verwenden zu können?

Nein, mit IronXL ist die Installation von Excel auf Produktionsservern nicht erforderlich. Dies vereinfacht die Bereitstellung und reduziert den Wartungsaufwand. IronXL läuft unter Windows, Linux, macOS und in Docker-Containern.

Unterstützt IronXL die Verarbeitung von CSV-Dateien?

Ja, IronXL unterstützt das Lesen und Verarbeiten von CSV-Dateien sowie anderer Excel-Formate wie XLS, XLSX und ODS vollständig über die WorkBook.Load-API.

Welche Vorteile bietet IronXL for .NET Entwickler?

IronXL bietet .NET -Entwicklern eine benutzerfreundliche Bibliothek zum Lesen, Schreiben und Bearbeiten von Excel-Dateien, ohne dass Microsoft Excel benötigt wird. Dies steigert die Produktivität und verkürzt die Entwicklungszeit dank einer sauberen, stark typisierten API.

Wie verbessert IronXL die Effizienz bei der Bearbeitung von Excel-Dateien?

IronXL steigert die Effizienz, indem es die Notwendigkeit von Excel-Software beseitigt, typisierte Zellwertzugriffsmethoden, threadsichere parallele Verarbeitung und eine schlanke Lösung bietet, die Excel-Dateien direkt in .NET Anwendungen verarbeitet.

Jordi Bardia
Software Ingenieur
Jordi ist am besten in Python, C# und C++ versiert. Wenn er nicht bei Iron Software seine Fähigkeiten einsetzt, programmiert er Spiele. Mit Verantwortung für Produkttests, Produktentwicklung und -forschung trägt Jordi mit immensem Wert zur kontinuierlichen Produktverbesserung bei. Die abwechslungsreiche Erfahrung hält ihn gefordert und engagiert, ...
Weiterlesen

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me