2014-12-04 13 views
6

Próbuję przekonwertować wiele plików Excela (xls) do pliku CSV, który znajduje się w folderze przy użyciu programu powershell.Konwersja wielu plików xls do CSV przy użyciu programu Power Shell

Potrafię konwertować pojedynczy plik, ale potrzebuję pomocy przy konwersji wielu plików w folderze. Ale potrzebujesz porady, jak konwertować wiele plików.

$ExcelWB = new-object -comobject excel.application 
$Workbook = $ExcelWB.Workbooks.Open(c:\temp\temp.xls) 
$Workbook.SaveAs("c:\temp\temp.csv",6) 
$Workbook.Close($false) 
$ExcelWB.quit() 
+1

Powinieneś udostępnić swój kod, w jaki sposób konwertujesz 1 plik? – Naigel

Odpowiedz

7

Wystarczy owinąć go w pętli, która wykonuje iteracje nad wszystkich plików i zmienić xls rozszerzenie csv:

foreach($file in (Get-ChildItem "C:\temp")) { 

    $newname = $file.FullName -replace '\.xls$', '.csv' 
    $ExcelWB = new-object -comobject excel.application 
    $Workbook = $ExcelWB.Workbooks.Open($file.FullName) 
    $Workbook.SaveAs($newname,6) 
    $Workbook.Close($false) 
    $ExcelWB.quit() 

} 
+0

Wskazówka: w tym folderze należy umieszczać tylko pliki XLS, ponieważ spowoduje to również konwersję innych plików i nie będzie ich otwierać w momencie uruchamiania powyższego skryptu! –

6

Są zastrzeżenia z tym kodem nietestowanego ale powinno pomóc owinąć Twój szef wokół kwestii

$ExcelWB = new-object -comobject excel.application 

Get-ChildItem -Path c:\folder -Filter "*.xls" | ForEach-Object{ 
    $Workbook = $ExcelWB.Workbooks.Open($_.Fullname) 
    $newName = ($_.Fullname).Replace($_.Extension,".csv") 
    $Workbook.SaveAs($newName,6) 
    $Workbook.Close($false) 
} 
$ExcelWB.quit() 

Weź linie pomiędzy pierwszym a ostatnim i zbuduj pętlę. Użyj pliku Get-ChildItem, aby pobrać pliki Xls, a następnie utwórz nową nazwę, zastępując rozszerzenie, jeśli FullName pliku

Powiązane problemy