2014-12-04 41 views
6

我試圖將多個excel文件(xls)轉換爲位於使用powershell的文件夾中的csv。使用PowerShell將多個xls轉換爲csv

我可以轉換單個文件,但需要幫助轉換文件夾中的多個文件。 但需要建議如何轉換多個文件。

$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

你應該分享你的代碼,你如何轉換1個文件? – Naigel 2014-12-04 11:56:34

回答

7

你只需將它包裝在一個循環遍歷所有的文件和改變xls擴展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

專業提示:只能將XLS文件放在這個文件夾中,因爲它也會轉換其他文件,並且在運行上面的腳本時沒有打開它們! – 2016-01-12 16:31:35

6

有這個未經測試的代碼的警告,但它應該幫助包裝你的頭在你的問題

$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() 

取第一個和最後一個之間的線並構建一個循環。使用Get-ChildItem抓住你的xls文件,然後通過替換擴展名來建立一個新的名字,如果文件的FullName