CSV-Datei nach Excel importieren
Hallo Leute,
ich möchte CSV-Dateien in eine Excel-Datei mit PowerSell importieren. Ich habe bereits viel ausprobiert aber habe noch 2 Probleme:
1. Die Excel-Datei ist nicht leer. Es steht also schon was in ihr drin. Wie bekomme ich es hin, dass ich die bestehende Datei nicht überschreibe, sondern die CSV-Datei quasi "unten dran hänge"?
2. Die CSV-Datei hat andere Überschriften für die Spalten als die Excel-Datei. Wie bekomme ich es hin, dass nur die Spalten aus der CSV in die Excel importiert werden, die auch als Überschrift in der Excel-Datei enthalten sind?
Bin dankbar für Antworten.
Liebe Grüße
ich möchte CSV-Dateien in eine Excel-Datei mit PowerSell importieren. Ich habe bereits viel ausprobiert aber habe noch 2 Probleme:
1. Die Excel-Datei ist nicht leer. Es steht also schon was in ihr drin. Wie bekomme ich es hin, dass ich die bestehende Datei nicht überschreibe, sondern die CSV-Datei quasi "unten dran hänge"?
2. Die CSV-Datei hat andere Überschriften für die Spalten als die Excel-Datei. Wie bekomme ich es hin, dass nur die Spalten aus der CSV in die Excel importiert werden, die auch als Überschrift in der Excel-Datei enthalten sind?
Bin dankbar für Antworten.
Liebe Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 316437
Url: https://administrator.de/forum/csv-datei-nach-excel-importieren-316437.html
Ausgedruckt am: 24.12.2024 um 01:12 Uhr
5 Kommentare
Neuester Kommentar
Mit Powershell in Excel importieren? D.h., Du bedienst Excel und seine Funktionen mit Powershell? An dem Punkt Powershell für dieses Problem kann ich Dir nicht helfen, allerdings sehe ich das so, dass der Import selbst schon eine drei-Schritte-Nummer wird:
1. csv in ein neues Tabellenblatt importieren
2. Daten formatieren (Überschriften, Spalten)
3. Daten unter die Haupttabelle kopieren.
Ich würde das dann mit VBA machen. Aber mit Powershell? Wenn das geht, will ich das auch wissen!
1. csv in ein neues Tabellenblatt importieren
2. Daten formatieren (Überschriften, Spalten)
3. Daten unter die Haupttabelle kopieren.
Ich würde das dann mit VBA machen. Aber mit Powershell? Wenn das geht, will ich das auch wissen!
Moin,
deine Aufgabe besteht aus mehreren Teilaufgaben, die du erst einmal definieren musst.
Dazu:
- nimm Excel daher und überlege dir, wie du damit in ein vorhandenes Tabellenblatt weitere Daten importieren kannst. Tipp: "Daten"
- mache dich schlau, wie die Powershell CSV-Dateien handhaben kann. GidF
- mache dich schlau, wie man mit der Powershell Excel "fernsteuern" kann. GidF
Wenn du diese Punkt "erforscht" hast, kannst du dich mal an einen Versuch machen, das Ganze umzusetzen. Bei Problemen helfe ich dann gerne weiter.
Gruß Krämer
PS: Alternativer Lösungsansatz: Lade die CSV mit der Powershell und übertrage die Werte direkt nach Excel. Ist der bessere Weg - nur nicht gleich so leicht zu durchschauen wie obiger "zu Fuß"-Ansatz
deine Aufgabe besteht aus mehreren Teilaufgaben, die du erst einmal definieren musst.
Dazu:
- nimm Excel daher und überlege dir, wie du damit in ein vorhandenes Tabellenblatt weitere Daten importieren kannst. Tipp: "Daten"
- mache dich schlau, wie die Powershell CSV-Dateien handhaben kann. GidF
- mache dich schlau, wie man mit der Powershell Excel "fernsteuern" kann. GidF
Wenn du diese Punkt "erforscht" hast, kannst du dich mal an einen Versuch machen, das Ganze umzusetzen. Bei Problemen helfe ich dann gerne weiter.
Gruß Krämer
PS: Alternativer Lösungsansatz: Lade die CSV mit der Powershell und übertrage die Werte direkt nach Excel. Ist der bessere Weg - nur nicht gleich so leicht zu durchschauen wie obiger "zu Fuß"-Ansatz
Hi,
Schau mal hier
Powershell für excel
Das sollte dich zumindest schon mal ein gutes Stück nach vorne bringen.
Alles was man mit VBA machen kann geht auch mit Powershell.
Also mit Import-CSV die CSV in die Powershell laden, dann mit Range("1:1").Find('Spaltenname') und einer Schleife alle Spaltennamen der CSV durchlaufen und dann die passende Spalte in ein zweidimensionales Array umwandeln und ins Ziel schreiben.
R.
ich möchte CSV-Dateien in eine Excel-Datei mit PowerSell importieren.
Powerseller findest du bei eBay Schau mal hier
Powershell für excel
Das sollte dich zumindest schon mal ein gutes Stück nach vorne bringen.
Alles was man mit VBA machen kann geht auch mit Powershell.
Also mit Import-CSV die CSV in die Powershell laden, dann mit Range("1:1").Find('Spaltenname') und einer Schleife alle Spaltennamen der CSV durchlaufen und dann die passende Spalte in ein zweidimensionales Array umwandeln und ins Ziel schreiben.
R.
Hallo,
http://sqlmag.com/powershell/update-excel-spreadsheets-powershell
http://michlstechblog.info/blog/powershell-control-excel-remotely/
Gruß,
Peter
http://sqlmag.com/powershell/update-excel-spreadsheets-powershell
http://michlstechblog.info/blog/powershell-control-excel-remotely/
Ich habe bereits viel ausprobiert aber habe noch 2 Probleme:
Warum nicht per VBA? Makrorecorder in Excel hilft da auch weiter...Gruß,
Peter
Servus zusammen,
Powershell und Excel, ich sags ja immer wieder, ist einfach grotten Lahm, da der Zugriff auf die COM-Objekt-Eigenschaften sehr langsam ist. Wenn COM-Automation mit Excel dann via VBA oder mit einer nativen App.
Der Vollständigkeit halber hier der Code für die Umsetzung in Powershell (aber nicht über die Geschwindigkeit wundern, btw wenn man das ganze in einer 32-Bit PS-Konsole ausführt ist es etwas schneller, aber immer noch nicht viel mehr). Zur Demo was passiert ist Excel sichtbar geschaltet, das lässt sich aber im Code anpassen.
Die Zusammenfassung der Daten komplett in der Powershell wäre sinngemäßer, Routinen für die CSV-Verarbeitung gibt es dort genügend. Oder als VBA-Makro in der Arbeitsmappe selber.
Dafür findest du hier genügend VBA Beispiele von mir, einfach die Suche an werfen. Ausrede gilt nicht!
Grüße Uwe
Powershell und Excel, ich sags ja immer wieder, ist einfach grotten Lahm, da der Zugriff auf die COM-Objekt-Eigenschaften sehr langsam ist. Wenn COM-Automation mit Excel dann via VBA oder mit einer nativen App.
Der Vollständigkeit halber hier der Code für die Umsetzung in Powershell (aber nicht über die Geschwindigkeit wundern, btw wenn man das ganze in einer 32-Bit PS-Konsole ausführt ist es etwas schneller, aber immer noch nicht viel mehr). Zur Demo was passiert ist Excel sichtbar geschaltet, das lässt sich aber im Code anpassen.
# Quelldateien
$quelle = 'C:\csv-test'
# Zieldatei
$ziel = "C:\csv-test\daten.xlsx"
# Excel Objekt
$objExcel = New-Object -Com Excel.Application
# Mappe öffnen
$wb = $objExcel.Workbooks.Open($ziel)
# Erstes Sheet für den Import benutzen
$ws = $wb.Sheets.Item(1)
# Excel anzeigen
$objExcel.Visible = $true
# Meldungen abschalten
$objExcel.DisplayAlerts = $false
$nextfreerow = $ws.Cells.Item($ws.Rows.Count,"A").End(-4162).Row + 1
# Ale CSV-Dateien des Ordners importieren
gci $quelle -Filter *.csv -File | %{
$csv = Import-CSV $_.Fullname -Delimiter ";" -Encoding Default
# Alle Spalten der CSV im Sheet Zeile 1 suchen
$csv | gm -MemberType NoteProperty | select -Expand Name | %{
$colname = $_
$col = $ws.Range("1:1").Find($_)
if ($col){
$arrCol = New-Object 'object[,]' $csv.$colname.Count,1
0..($csv.$colname.Count - 1) | %{
$arrCol[$_,0] = $csv.$colname[$_]
}
$ws.Cells.Item($nextfreerow,$col.Column).Resize($csv.$colname.Count,1).Value() = $arrCol
}
}
$nextfreerow += $csv.Count
}
$objExcel.DisplayAlerts = $true
# Datei speichern
$wb.Save()
# Dokument schließen
$wb.Close($false)
# Excel schließen
$objExcel.Quit()
# Ressourcen freigeben
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($objExcel) | out-null
Dafür findest du hier genügend VBA Beispiele von mir, einfach die Suche an werfen. Ausrede gilt nicht!
Grüße Uwe