Ich habe eine Excel-Konsolenanwendung geschrieben, welche sich eine CSV-Datei holt, diese in ein Excel-Sheet einfügt, formatiert und als Excel-Datei speichert.
Dafür gibt es dann einen Auftrag auf einem Server, der täglich diese Listen erstellt. Ich habe das ganze in ein PowerShell-Skript gepackt, da noch ein paar andere Aufgaben mit der Datei erfolgen. Wenn ich das Skript von Hand (mit PowerShell) starte, funktioniert alles bestens. Aber als Auftrag läuft es weder zeitgesteuert, noch manuell gestartet. Die Excel-Datei wird nicht erzeugt.
Der Benutzt mit dem ich die Anwendung starte ist immer der Gleiche und hat auch alle Rechte. Und Excel ist auch auf dem Server installiert.
Kennt jemand das Problem, oder hat einen guten Hinweis für mich?
Vielen Dank schon mal!
Gerald
Excel ist eine Desktop-Anwendung, die IIRC eine User Shell benötigt.
Du kannst es also nicht ohne solches automatisieren.
Wieso nutzt Du nicht einfach, wie es seit bald 15 Jahren gibt, OpenXML für sowas?
Wegen sowas wurde OpenXML erfunden, weil die Office Anwendungen nie für solche Automatisierungen gedacht waren/sind.
Gibt auch sehr beliebte NuGets dafür
https://www.nuget.org/packages/EPPlus
https://www.nuget.org/packages/ClosedXML
Aber Excel dafür zu automatisieren ist wahrlich nicht die beste Idee.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo,
ich habe jetzt eine Excel-Datei mit einem Sheet erzeugt (mit OpenXML). Nun möchte ich Daten aus einer CSV-Datei dort einfügen. Gibt es dafür schon ein Beispiel? Beim Suchen im Internet habe ich erstmal leider nichts gefunden.
Schon mal vielen Dank
Gerald
Wir müssten in 99% der Fälle jetzt auch suchen, wie Du.
Aber ich bezweifle, dass Du dazu ein 1:1 Beispiel findest - denn so funktioniert weder OpenXML noch Logik.
Dort wirst kaum openXml.AddMyPersonalCsvStuffByBlackMagic()
finden.
Wie Du Elemente in einer OpenXML ersetzt / hinzufügst, das findest dort in der Doku.
Das Parsen einer CSV wirst auch irgendwo finden; und Deine Aufgabe ist nun beides zu kombinieren.
Denke, dass Du das hin bekommen wirst.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code