133720

Powershell - Excel in HTML konvertieren

Hallo Leute.

Ich hoffe mir kann jemand helfen bei meinem winzigen Powershell-Problem.
Es wird ein Skript benötigt welches per Aufgabenplanung nach x-Minuten ausgeführt werden soll.
Excel-Datei von A nach B kopieren und entsprechend in HTML konvertieren damit der Webserver es wiedergeben kann.

Hier mein Anfang. Das Ding soll leicht verständlich sein sodass ein debuggen auch für andere möglich ist.

Remove-Item -Path 'C:\tmp\b\Mappe1.html';
Copy-Item -Path 'C:\tmp\a\Mappe1.xlsx' -Destination C:\tmp\b -Force;


Mir fehlt nur der Teil mit der Konvertierung. Das was ich im Netz gefunden habe, war nicht verständlich für mich.
Wenn jemand eine Idee hat bitte hier einmal posten.

Besten Dank.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 1685808336

Url: https://administrator.de/forum/powershell-excel-in-html-konvertieren-1685808336.html

Ausgedruckt am: 08.05.2025 um 19:05 Uhr

149569
149569 03.01.2022, aktualisiert am 04.01.2022 um 09:29:13 Uhr
Goto Top
# assembly für Konstanten laden
Add-Type -A Microsoft.Office.Interop.Excel
# Excel Instanz erzeugen / evt. User-Abfragen deaktivieren
$objExcel = New-Object -Com Excel.Application -Property @{Visible = $false;DisplayAlerts = $false}
# Excel Dokument öffnen
$wb = $objExcel.Workbooks.Open("C:\tmp\a\Mappe1.xlsx")  
# Dokument als HTML speichern
$wb.SaveAs("C:\tmp\b\Mappe1.html",[Microsoft.Office.Interop.Excel.XlFileFormat]::xlHtml)  
# Abfragen wieder einschalten sonst bekommt der User beim nächsten Verwenden von Excel keine Dialoge mehr präsentiert, weil die Einstellung permanent ist.
$objExcel.DisplayAlerts = $true
# Excel schließen und verwendete COM Ressourcen vom Excel Objekt freigeben
$objExcel.Quit()
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($objExcel)
133720
133720 03.01.2022 um 19:48:05 Uhr
Goto Top
Meine Fresse ging das schnell.
Damit ich nachvollziehen kann was die einzelnen Zeilen tun, habe ich diese onlien einmal recherchiert.
Vielleicht hast du die Musse mir kurz zu erklären was Zeile für Zeile tut. Man muss ja nicht dumm sterben ;)

Auf diesen Code wäre ich nie gekommen. Mir ist leider nicht ganz klar warum du so viele Variablen ($) erstellst.
Geht das auch ohne?

@149569, ich gehe mal davon aus das du voll im Thema bist. Besten dank dafür. wird auf dem Zielsystem getestet.

Bestend Dank dir !!!
149569
149569 04.01.2022 aktualisiert um 09:38:06 Uhr
Goto Top
Zitat von @133720:

Auf diesen Code wäre ich nie gckommen. Mir ist leider nicht ganz klar warum du so viele Variablen ($) erstellst.
Geht das auch ohne?
Wenn du noch dümmer sterben willst 😆. Kürzer geht immer aber ob dir das beim Verständnis geholfen hätte, ich bezweifle es ...zumal die Variablen hier nun wirklich kein Moos fressen weil sie eh gleich wieder durch die Garbage Collection zerstört werden.
$objExcel = New-Object -Com Excel.Application -Property @{DisplayAlerts = $false}
$objExcel.Workbooks.Open("C:\tmp\a\Mappe1.xlsx").SaveAs("C:\tmp\b\Mappe1.html",44)  
$objExcel.DisplayAlerts = $true
$objExcel.Quit()
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($objExcel)

Kommentare zur ausführlichen Variante siehe Ergänzung in den Zeilen weiter oben.

ACHTUNG mit dem Taskplaner, hier sind ein paar Vorarbeiten nötig damit Office COM Skripte auch erfolgreich laufen können, siehe
Per Batch in Aufgabeplanung XLS in CSV umwandeln