我嘗試使用下面的PowerShell腳本到多個Excel文件(XLS)轉換成CSV:如何使用PowerShell將多個xls文件轉換爲csv?
$excel = new-object -ComObject "Excel.Application"
$excel.DisplayAlerts=$True
$excel.Visible =$false
foreach ($file in get-childitem $src_dir) {
$wb = $excel.Workbooks.Open($file.FullName)
$wb.SaveAs($dst_dir + $file.Name + ".csv", 6)# 6 -> csv
$wb.Close($True)
}
$excel.Quit()
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
原則上這個作品如我得到了csv文件。然而,對於一些文件(每次運行而有所不同)我得到一個異常:
Exception calling "SaveAs" with "2" argument(s): "Microsoft Office Excel cannot access the file 'C:\Users\...\AppData\Local\Temp'. ...
此外,我得到一個消息框,詢問我是否將更改保存到源XLS。
一旦我調用SaveAs,$ wb引用新文件。那麼如何保存或放棄對源文件的更改?爲什麼只有幾個文件纔會發生這種情況?這個腳本還有其他問題嗎?
更新
我分輸入文件(約200)任意地(即不知道組的大小)在其自身的運行成10組和處理每個組。這有效,所以有點不方便。
在此先感謝
你看看在錯誤顯示的tempory文件,只是爲了看看是否有沒有剩餘的文件。我在PDF轉換腳本中遇到了類似的問題,而其餘的舊臨時文件仍然是問題的根源。 – JPBlanc 2011-05-19 19:42:46
不幸的是,錯誤信息只能命名Temp目錄。我在運行過程中監視目錄,並且顯示並消失了隨機名稱的兩個文件(假定爲每個轉換後的xls)。 – wierob 2011-05-20 08:33:33