Laden...

C# Excel einlesen ohne InterOp

Erstellt von Marc_Core vor 4 Monaten Letzter Beitrag vor 2 Monaten 426 Views
M
Marc_Core Themenstarter:in
7 Beiträge seit 2021
vor 4 Monaten
C# Excel einlesen ohne InterOp

Hallo ich schreibe ein C# Skript für Eplan (E-Cad Programm).

Da kann ich nur eine XXX.cs laden und Starten.

Aus diesem Skript möchte eine Excel-Datei einlesen.

InterOp funktioniert nicht, weil der Verweis nicht geht. Weil keinen Verweis erstellen kann, wie im MS-Studio.

Was gibt es für Möglichkeiten?

Danke euch.

2.071 Beiträge seit 2012
vor 4 Monaten

Zum Lesen von Excel such mal nach "ClosedXML". InterOp brauchst Du mit dem OpenXML-Format nicht, aber ohne NuGet-Packages geht's nicht.

Wie wäre es, wenn Du eine DLL programmierst, als Datei irgendwo hin legst, in dem Script die Datei lädst und mit Reflection irgendeine Methode ausführst?

16.783 Beiträge seit 2008
vor 4 Monaten

Sofern wir von xlsx sprechen, so ist das nichts anderes als eine Zip-Datei, die XML-Dateien beinhaltet.
Kannst auch alles selbst implementieren.

O
461 Beiträge seit 2009
vor 2 Monaten

Hallo, kurze Info von mir, habe das gerade gesehen weil ich auf der Suche nach etwas war.

Mit Excel habe ich mich schon öfters herumgeägert, weil plötzlich mti dem Standard nichts mehr geht sobald es um 32 oder 64 bit geht, bei den PC's aber irgend ein Mischmasch installiert ist.

Ich habe dann das NPOI gefunden, dass kann auch noch das XLS-Format verarbeiten.

Google mal nach NPOI.

4.919 Beiträge seit 2008
vor 2 Monaten

NPOI ist aber auch eine externe Assembly, so daß man dafür einen Verweis bräuchte (*).

Man müßte also, wie Palladin007 schon schrieb, selber eine DLL erzeugen und diese dann dynamisch laden (dies müßte man aber zuerst mal mit dem E-Cad Programm Eplan ausprobieren - je nachdem welche C#- und .NET-Version verwendet wird).

* Es gäbe zwar auch noch die Möglichkeit, alle NPOI-Sourcen zu einer Datei zusammenzufügen (aber dazu müßte man auch die Apache 2.0 Lizenz beachten) - und ob Eplan das dann direkt compiliert, hinge auch wieder von der verwendeten C#-Version ab.