Excel Diagramm mit Powershell erstellen
Ich versuche über Powershell eine txt-Datei als Diagramm in Excel ausgeben zu lassen.
Die Datei besteht aus 7 Spalten, in der ich die Zahlen aus der 6 Spalte für das Diagramm nutzen möchte.
Hierbei erstellt das Skript mir ein leeres Diagramm. Ich weiß leider nicht wie ich die werte einzelnt aus der Datei herausfiltern kann.
Ich dachte $zeile.1 würde das bei der Varable $daten tuen. Dies funktioniert jedoch nicht.
Die Datei besteht aus 7 Spalten, in der ich die Zahlen aus der 6 Spalte für das Diagramm nutzen möchte.
Hierbei erstellt das Skript mir ein leeres Diagramm. Ich weiß leider nicht wie ich die werte einzelnt aus der Datei herausfiltern kann.
Ich dachte $zeile.1 würde das bei der Varable $daten tuen. Dies funktioniert jedoch nicht.
$Datapath = "Dateipfad" #text file path
$file = Get-Content $Datapath |Out-String
$file.Replace(".",",") |Out-File $Datapath #points are converted to commas
$txtDatei = Get-Content $Datapath #txt-file is inserted in powershell
$Content = Import-Csv -Delimiter "`t" -Path "$Datapath" -Header "1", "2", "3", "4", "5", "6", "7"
$excel = New-object -comobject Excel.Application
$excel.Visible = $true
$excel.DisplayAlerts = $false
$workbook = $excel.Workbooks.Add()
$sheet = $workbook.Worksheets.Item(1)
$sheet.Name = 'Diagramm'
foreach ($zeile in $object){
$daten = $Content.6
$daten = $zeile.1
#Write-Host $zeile.1
foreach ($a in 1..100){
$sheet.cells.item($daten) = $a
}
}
$range = $sheet.range('a1:a100')
$chart = $sheet.shapes.addChart().chart
$chart.chartType = 58
$chart.setSourceData($range)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 666631
Url: https://administrator.de/forum/excel-diagramm-mit-powershell-erstellen-666631.html
Ausgedruckt am: 25.04.2025 um 23:04 Uhr
2 Kommentare
Neuester Kommentar
Am Besten ist es, wenn Du den Vorgang der Erstellung des Diagramms in Excel zunächst manuell durchspielst. Dann weißt, ob das Ergebnis das ist, was Du haben willst. Im Anschluss zeichnest Du ein Makro auf und spulst dabei den manuellen Vorgang noch einmal ab. Daraus ergibt sich ein Makrotext, den Du entweder von der Syntax her nach Powershell (komplett) übernehmen oder aber für die Fehlersuche als Vergleich heranziehen kannst. Du kannst das Makro auch partiell "ausschlachten".
Bei der Übernahme musst Du natürlich die Konventionen von Powershell beachten. Aber eigentlich ist das ganz simpel.
Viele Grüße
HansDampf06
Bei der Übernahme musst Du natürlich die Konventionen von Powershell beachten. Aber eigentlich ist das ganz simpel.
Viele Grüße
HansDampf06

Moin.
Kaffee einschenk.
By the way bitte das nächste mal doch die Netiquette beachten
Diskussionsrichtlinien - die Regeln zu unseren Inhalten
Gruß w.
foreach ($zeile in $object){
Fällt dir da nichts auf? Die Variable gibbet bei dir ned By the way bitte das nächste mal doch die Netiquette beachten
Diskussionsrichtlinien - die Regeln zu unseren Inhalten
$objExcel = New-Object -Com Excel.Application -Property @{Visible = $true}
$wb = $objExcel.Workbooks.Add()
$ws = $wb.Sheets.Item(1)
$coldata = Import-CSV 'D:\daten.csv' -Delimiter "`t" -Header (1..7) | select -Expand 6
0..($coldata.Count-1) | %{
$ws.Cells.Item($_+1,1).Value = [decimal]$coldata[$_]
}
$chart = $ws.Shapes.AddChart(58)
$chart.chart.SetSourceData($ws.Range("A1").CurrentRegion)
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($objExcel)