Powershell für excel
Hallo ich benötige hilfe bei Powershell leider bin ich noch neu im Programmieren und würde mich freuen wenn ihr mir helfen könnt.
Ich habe 4 Dateitypen von .csv und wollte fragen ob ihr mir helfen könnt es in eine Umzuwandeln. In dem Script was ich angefangen habe öffnen sich leider alle 4 einzeln und wäre schön wenn es eine Datei wird. Ich weiß leider nicht wie man es Importieren kann das es nur noch eine ist wäre super wenn ihr mir helfen könntet.
$Excel = New-Object -Comobject Excel.Application
$Excel.Visible = $true
$Filepath = "D:\s1.csv"
$Workbook = $Excel.Workbooks.Open($Filepath)
$Filepath = "D:\s2.csv"
$Workbook = $Excel.Workbooks.Open($Filepath)
$Filepath = "D:\s3.csv"
$Workbook = $Excel.Workbooks.Open($Filepath)
$Filepath = "D:\s4.csv"
$Workbook = $Excel.Workbooks.Open($Filepath)
danke für eure zeit
Ich habe 4 Dateitypen von .csv und wollte fragen ob ihr mir helfen könnt es in eine Umzuwandeln. In dem Script was ich angefangen habe öffnen sich leider alle 4 einzeln und wäre schön wenn es eine Datei wird. Ich weiß leider nicht wie man es Importieren kann das es nur noch eine ist wäre super wenn ihr mir helfen könntet.
$Excel = New-Object -Comobject Excel.Application
$Excel.Visible = $true
$Filepath = "D:\s1.csv"
$Workbook = $Excel.Workbooks.Open($Filepath)
$Filepath = "D:\s2.csv"
$Workbook = $Excel.Workbooks.Open($Filepath)
$Filepath = "D:\s3.csv"
$Workbook = $Excel.Workbooks.Open($Filepath)
$Filepath = "D:\s4.csv"
$Workbook = $Excel.Workbooks.Open($Filepath)
danke für eure zeit
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 311745
Url: https://administrator.de/contentid/311745
Ausgedruckt am: 26.11.2024 um 18:11 Uhr
9 Kommentare
Neuester Kommentar
This should be a "question" rather then a knowledge thread ?!
Regards
$merged = @()
gci "D:\s*.csv" | %{$merged +=(Import-Csv $_.Fullname -delimiter ";")}
$merged | export-csv "D:\result.csv" -delimiter ";" -NoTypeInformation -Encoding UTF8
The above works, tested it. You need to edit the used delimiter in your CSV files.
No, only my script !! No combination!
Like I said modify the delimiter which is used in your CSV files in my script above...
-delimiter ";"
Or
-delimiter ","
You don't need Excel to combine CSV Files !! This can be done directly with plain powershell
Like I said modify the delimiter which is used in your CSV files in my script above...
-delimiter ";"
Or
-delimiter ","
You don't need Excel to combine CSV Files !! This can be done directly with plain powershell
Hallo,
Ist dir schon aufgefallen das wenn du in einer Kneipe ein Bier bestellst das du keine Pizza bekommst? Du hast genau bekommen wonach du verlangt hast. Aber nur zur klarstellung:
CSV steht für Comma Seperated Value und sonst nichts. Das mittels Excel eine CSV datei mit irgendwelchen Inhalten (aber keine Exceldaten) durch doppelklick geöffnet werden kann ist zwar schön, aber es bleiben trotzdem nur Komma getrennte Werte. Eine richtige Exceldatei beihaltet neben den Werten hauptsächlich nor vieles anderes damit ein tabellenblatt als Tabellenblatt und nicht als Word Dokument dargestellt werden kann. Von den Excel internas wie Formeln, Formatierungen usw. mal gar nicht zu reden. Folglich kannst du keine CSV datei bauen welche Tabellenblätter enthalten. Die Tabellenblätter ziegt dir erst Excel an und notfalls werden die auch gespeichert - das ist dann eine .xls oder .xla oder .xlsx usw. - aber keine CSV mehr. Ein Editor der tatsächlich dir zeigen kann was dort drin steht zeugt es dir. Ein Notepad kann das schon, Wordpad ebenso wie ein Hex Editor....
Ob du per Powershell aus 4 einzelne CSV Dateien eine Excel Datei mit 4 Arbeitsblätter machen kannst - k.a. Ansonsten den Macrorekorder deines Excel nutzen und dir aufzeichnen lassen was passiert wenn du es händisch machst. Raus kommt VBA Code http://www.online-excel.de/excel/singsel_vba.php?f=84
Gruß,
Peter
Ist dir schon aufgefallen das wenn du in einer Kneipe ein Bier bestellst das du keine Pizza bekommst? Du hast genau bekommen wonach du verlangt hast. Aber nur zur klarstellung:
CSV steht für Comma Seperated Value und sonst nichts. Das mittels Excel eine CSV datei mit irgendwelchen Inhalten (aber keine Exceldaten) durch doppelklick geöffnet werden kann ist zwar schön, aber es bleiben trotzdem nur Komma getrennte Werte. Eine richtige Exceldatei beihaltet neben den Werten hauptsächlich nor vieles anderes damit ein tabellenblatt als Tabellenblatt und nicht als Word Dokument dargestellt werden kann. Von den Excel internas wie Formeln, Formatierungen usw. mal gar nicht zu reden. Folglich kannst du keine CSV datei bauen welche Tabellenblätter enthalten. Die Tabellenblätter ziegt dir erst Excel an und notfalls werden die auch gespeichert - das ist dann eine .xls oder .xla oder .xlsx usw. - aber keine CSV mehr. Ein Editor der tatsächlich dir zeigen kann was dort drin steht zeugt es dir. Ein Notepad kann das schon, Wordpad ebenso wie ein Hex Editor....
Ob du per Powershell aus 4 einzelne CSV Dateien eine Excel Datei mit 4 Arbeitsblätter machen kannst - k.a. Ansonsten den Macrorekorder deines Excel nutzen und dir aufzeichnen lassen was passiert wenn du es händisch machst. Raus kommt VBA Code http://www.online-excel.de/excel/singsel_vba.php?f=84
Gruß,
Peter
Hallo Marcus86,
Ich geh mal von CSV-Dateien im ANSI-Format und Semikolon(;) als Delimiter aus...
Für die Zukunft, formuliere dein Vorhaben "präzise", das sollte man als angehender Entwickler immer beherzigen wenn man hier passenden Code erwartet. Merci!
Grüße Uwe
Zitat von @Crank69:
danke die Dateien sind jetzt komplett, aber wollte das die 4 Daten in 4 Tabellenblatt aufgeteilt sind.
Warum schreibst du das dann nicht gleich in deinen Thread und lässt die User hier auflaufen??danke die Dateien sind jetzt komplett, aber wollte das die 4 Daten in 4 Tabellenblatt aufgeteilt sind.
Ich geh mal von CSV-Dateien im ANSI-Format und Semikolon(;) als Delimiter aus...
# Quelldateien
$quelle = 'D:\s[1-2].csv'
# Zieldatei
$ziel = "D:\workbook.xlsx"
# Excel Objekt
$objExcel = New-Object -Com Excel.Application
# platzhalter für leere Parameter
$n = [System.Reflection.Missing]::Value
# Neue Mappe öffnen
$wb = $objExcel.Workbooks.Add()
# Excel anzeigen
$objExcel.Visible = $true
# Meldungen abschalten
$objExcel.DisplayAlerts = $false
# Ale CSV-Dateien des Ordners in ein neue Sheets importieren
gci $quelle | ?{!$_.PSIsContainer} | %{
# neues Sheet am Ende hinzufügen
$ws = $wb.Worksheets.Add($n,$wb.Worksheets.Item($wb.Worksheets.Count),$n,$n)
# Sheet nach dem Namen der Datei benennen
$ws.Name = $_.Name
# CSV per Querytable importieren
$qt = $ws.QueryTables.Add("TEXT;$($_.Fullname)",$ws.Range("A1"))
$qt.Name = "Import"
$qt.FieldNames = $true
$qt.AdjustColumnWidth = $true
$qt.TextFilePlatform = 1252
$qt.TextFileStartRow = 1
$qt.TextFileParseType = 1
$qt.TextFileSemicolonDelimiter = $true
$qt.Refresh($false)
# Datenverbindung löschen
$qt.Delete()
}
$objExcel.DisplayAlerts = $true
# Datei speichern
$wb.SaveAs($ziel)
# Dokument schließen
$wb.Close($false)
# Excel schließen
$objExcel.Quit()
# Ressourcen freigeben
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($objExcel)
Grüße Uwe