Hier ist ein Beispiel Script für Powershell mit COM Objekten.
# Definiere den Pfad zur Excel-Datei
$excelFilePath = "C:\Prices.xlsx"
$newExcelFilePath = "C:\Prices_w_Chart.xlsx"
# Starte Excel und öffne die Arbeitsmappe
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false # Setze auf $true, wenn du sehen willst, was passiert
$workbook = $excel.Workbooks.Open($excelFilePath)
# Wähle das Arbeitsblatt "Daily" aus
$sheet = $workbook.Sheets.Item("Daily")
# Finde die letzte Zeile
$lastRow = $sheet.Rows.Count
# Definiere die Datenbereiche für das Datum (Spalte C) und den Preis (Spalte E)
$dateRange = $sheet.Range("C2:C$lastRow")
$priceRange = $sheet.Range("E2:E$lastRow")
# Füge ein neues Diagramm hinzu
$chart = $workbook.Charts.Add()
$chart.ChartType = 4 # 4 steht für ein Liniendiagramm
# Weisen Sie dem Diagramm den Datenbereich zu
$chart.SetSourceData($sheet.Range("C2:E$lastRow"))
# Titel und Achsenbeschriftungen setzen
$chart.HasTitle = $true
$chart.ChartTitle.Text = "Goldpreis über Zeit"
$chart.Axes(1).HasTitle = $true # X-Achse
$chart.Axes(1).AxisTitle.Text = "Datum"
$chart.Axes(2).HasTitle = $true # Y-Achse
$chart.Axes(2).AxisTitle.Text = "Goldpreis in USD"
# Speichern und schließe die Datei
$workbook.SaveAs($newExcelFilePath)
$workbook.Close()
$excel.Quit()
# Excel-Objekte freigeben
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($chart) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($sheet) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
[GC]::Collect()
[GC]::WaitForPendingFinalizers()