1 Pluspunkt 0 Minuspunkte

Ich habe mir die historischen Goldpreise als XLSX Sheet von hier heruntergeladen. Wie kann ich mit Powershell automatisch ein Chart als neues Sheet hinzufügen das mir den täglichen Preis von Beginn an als Liniendiagramm darstellt?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

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()
von (566 Punkte)