我尝试使用下面的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