mvinogradac
Goto Top

Powershell eine bestehende Excel Chart beabreiten

Hallo Zusammen

Habe ein Code erstellt der mir in Excel die Daten speichert, dann eine neue Chart erstellt und mit den Daten befüllt.
Die Daten werden immer ins gleiche Excel File fortlaufen geschrieben, und somit wollte ich eigentlich das die Chart Tabelle aktualisiert wird.
Doch leider erstellt er mir beim jedem Aufruf immer eine neue, hätte hier jemand eine Lösung ?

Grüße

#=========================================================================
#=========================================================================
Write-Verbose "Filtern der User nach Zeit und Ergebniss in Excel schreiben..."
$varDate = $varLastLogon | select-object @{Name="lastlogon"; Expression = {[datetime]::fromfiletime($_.Properties["lastlogon"])}} | where-object {$_.lastlogon -gt $DateTime1 -and $_.lastlogon -lt $DateTime2}
If ($varDate.Count -eq $Null) {
#=========================================================================
#=========================================================================
$introw = $ObjExcelSheet.UsedRange.Rows.Count + 1
$ObjExcelSheet.cells.item($introw, 1) = "$DateTime1 und $DateTime2"
$ObjExcelSheet.cells.item($introw, 2) = "0"
$ObjExcelSheet.range($ObjExcelSheet.cells.item(1,1),$ObjExcelSheet.cells.item(1,2)).Font.Bold = $true
$ObjExcelSheet.UsedRange.EntireColumn.AutoFit();

#=========================================================================
#=========================================================================
$ObjExcelSheet.range("A1").select()
$ObjExcel.Selection.CurrentRegion.Select()
$ObjExcelFile.charts.add() | out-null
$worksheet = $ObjExcelFile.Worksheets.Item(1)
$chart = $worksheet.chartobjects(1).chart
$ObjExcelFile.ActiveChart.Location(2,$($ObjExcelSheet.name)) | out-null
$ObjExcelFile.ActiveChart.chartType = 65
$ObjExcelFile.ActiveChart.seriescollection(1).border.LineStyle = -4118

#=========================================================================
#=========================================================================
$ObjExcelFile.ActiveChart.hasTitle=$true #titel erscheint oder nicht , #Überschrift
$ObjExcelFile.ActiveChart.ChartTitle.Text = "Auswertung LastLogon"

#=========================================================================
#=========================================================================
$ObjExcelFile.ActiveChart.Axes(1).HasTitle = $True
$ObjExcelFile.ActiveChart.Axes(2).HasTitle = $True
$ObjExcelFile.ActiveChart.Axes(1).AxisTitle.Text = "User Aanzahl"
$ObjExcelFile.ActiveChart.Axes(2).AxisTitle.Text = "Auswertungszeit"
$ObjExcelFile.ActiveChart.Axes(1).AxisTitle.font.ColorIndex=46 #siehe Abschnitt Farben
$ObjExcelFile.ActiveChart.Axes(1).AxisTitle.Font.Bold=$true
$ObjExcelFile.ActiveChart.Axes(1).AxisTitle.Font.Size=15

#=========================================================================
#=========================================================================

#=========================================================================
#=========================================================================
$ObjExcel.Application.DisplayAlerts = $False
$ObjExcelFile.SaveAs("$varPath")
$ObjExcelFile.Close()

Content-Key: 217828

Url: https://administrator.de/contentid/217828

Printed on: April 19, 2024 at 06:04 o'clock

Member: Knorkator
Knorkator Sep 26, 2013 at 11:17:58 (UTC)
Goto Top
Hallo,

ich bin eigentlich erst durch Deinen Post auf die Idee gekommen, dass man per PS Inhalte in Excel Dateien schreiben kann.
Daher ist mein Wissen da noch sehr begrenzt.

Prinzipiell habe ich ähnliches vor wie Du.

Ich Protokolliere bisher die Hyper-V Performancedaten per Measure-vm in eine .csv Datei welche bei Aufruf einer Excel Tabelle automatisch eingelesen wird.
Praktischer wäre für mich die Möglichkeit, eine bestehende Excel Datei (incl. Diagramm) zu öffnen und immer die gleichen Zellen mit neuen Performancedaten zu füllen.
So würde die Datei später automatisch per Mail verschickt und ich hätte jeden morgen die fertige Auswertung incl. Diagramm im Postfach!

Also.. wie erwähnt, ich stehe noch am Anfang.

So wie ich das sehe, fehlt in Deinem Script folgendes:

$file="D:\test.xlsx"
$xl=New-Object -ComObject "Excel.Application"
$wbk = $xl.Workbooks.Open("$file")

Gruß
Member: Mvinogradac
Mvinogradac Sep 27, 2013 at 04:44:47 (UTC)
Goto Top
Guten Morgen,

habe gesehen das nicht mein ganzer Script dabei ist. Also ich öffne die Excel Tabelle mit PS im Hintergrund, befülle diese auch mit Daten (immer eine neue Zeile).
Speichere diese Excel Tabelle und schließe Sie auch, es funktioniert wuderbar.

Doch leider schaffe ich es nicht die erzeugte Tabelle immer zu aktualisieren, sondern er erstellt immer wieder eine neue, das ist bei einer einmaligen Auswertung okay, aber nicht bei einer wo immer neue Daten dazukommen.

Wenn du mit deine E-Mail gibst sende ich dir mal das Komplette Script zu....