Powershell Zeile in Excel schreiben
Hallo Zusammen
Ich arbeite an einigen Digitalisierungsmaßnahmen und brauche Hilfe.
Ich habe eine historisch gewachsene Excel Dateien mit Makro. Die bekommen wir in nicht sehr guter Qualität mehrmals die Woche und ich muss die Daten aus der Datei weiterverarbeiten.
Dazu lese ich per Powershell Script die XLSM Datei ein
$ExcelFile = Import-Excel -Path $Path_xlsm -WorksheetName "NÄM" -noHeader
Das Powershell Modul Import-Excel macht daraus dann eine Tabelle in der ich auf die Felder zugreifen kann, z.B.
$Excel_datas = $ExcelFile[12].P27
Das ist der Zugriff auf die 10. Zeile (Erste Zeile ist Tabellen Überschrift, zweite Zeile ist die 0) und die 27. Spalte
Da suche ich mir dann rund 10 Werte raus und möchte die dann in einer Zeile an eine bestehende Excel Datei (.xlsx) anhängen.
Ich hab das dann erst mit
$Excel_datas_array | Export-Excel -path $path -WorksheetName Tabelle1
versucht, aber er schreibt mir das dann untereinander.
Nun bin ich bei Open-ExcelPackage angekommen, verstehe hier aber den Syntax nicht.
Der Befehl InsertRow (Beispiel $ExcelPkg.Workbook.Worksheets["Tabelle1"].InsertRow($Excel_datas_array)) erweitert die Tabelle nur um eine Zeile, aber schreibt dort nichts rein.
Kann mir hier jemand mit nem kleinen Code Schnipsel weiterhelfen?
Einmal wie ich genau den Array dazu erstelle und wie ich das dann an Excel anhänge.
Vielen Dank schon mal
Ich arbeite an einigen Digitalisierungsmaßnahmen und brauche Hilfe.
Ich habe eine historisch gewachsene Excel Dateien mit Makro. Die bekommen wir in nicht sehr guter Qualität mehrmals die Woche und ich muss die Daten aus der Datei weiterverarbeiten.
Dazu lese ich per Powershell Script die XLSM Datei ein
$ExcelFile = Import-Excel -Path $Path_xlsm -WorksheetName "NÄM" -noHeader
Das Powershell Modul Import-Excel macht daraus dann eine Tabelle in der ich auf die Felder zugreifen kann, z.B.
$Excel_datas = $ExcelFile[12].P27
Das ist der Zugriff auf die 10. Zeile (Erste Zeile ist Tabellen Überschrift, zweite Zeile ist die 0) und die 27. Spalte
Da suche ich mir dann rund 10 Werte raus und möchte die dann in einer Zeile an eine bestehende Excel Datei (.xlsx) anhängen.
Ich hab das dann erst mit
$Excel_datas_array | Export-Excel -path $path -WorksheetName Tabelle1
versucht, aber er schreibt mir das dann untereinander.
Nun bin ich bei Open-ExcelPackage angekommen, verstehe hier aber den Syntax nicht.
Der Befehl InsertRow (Beispiel $ExcelPkg.Workbook.Worksheets["Tabelle1"].InsertRow($Excel_datas_array)) erweitert die Tabelle nur um eine Zeile, aber schreibt dort nichts rein.
Kann mir hier jemand mit nem kleinen Code Schnipsel weiterhelfen?
Einmal wie ich genau den Array dazu erstelle und wie ich das dann an Excel anhänge.
Vielen Dank schon mal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 5451533418
Url: https://administrator.de/contentid/5451533418
Ausgedruckt am: 05.11.2024 um 15:11 Uhr
3 Kommentare
Neuester Kommentar
Wenn ich das richtig verstehe willst du die Inhalte deines Arrays komplett in eine Zeile schreiben und nicht jeder wert in eine neue Zeile.
Eine Möglichkeit wäre es den den Arrayinhalt in eine Zeichenfolge zu konvertieren.
Sollte da helfen können
M.f.G.
Eine Möglichkeit wäre es den den Arrayinhalt in eine Zeichenfolge zu konvertieren.
$string = ($Array -join ",")
$string = ($Array -join ",")
Add-ExcelRow -Path <path to excel file> -Workbookname <Excel workbook name> -Sheetname <Sheet name> -RowValues @{Column1 = $string}
M.f.G.
Es geht auch ganz ohne externe zusätzliche Libraries über das Excel COM-Object:
Wurstel
Add-Type -AssemblyName Microsoft.Office.Interop.Excel
$objExcel = New-Object -Com Excel.Application -Property @{Visible = $true}
$wb = $objExcel.Workbooks.Open("D:\Data\Mappe1.xlsx")
$ws = $wb.Sheets.Item(1)
$intRowNext = $ws.UsedRange.SpecialCells([Microsoft.Office.Interop.Excel.XlCellType]::xlCellTypeLastCell).Row + 1
$array = "Test1","Test2","Test3"
$ws.Cells($intRowNext,"A").Resize(1,$array.Count).Value = $array
Wurstel