PowerShell脚本将多个excel文件转换为csv的问题

时间:2017-04-14 22:48:40

标签: windows powershell

使用以下代码转换指定目录中的所有excel文件。当我尝试将一个文件转换为csv时,它按预期工作,但是当我尝试将所有excel文件转换为csv时,没有任何异常抛出,并且文件未被转换。

$path = get-childitem -path "\\sharedrive\excelfiles\" -filter *.xlsx

foreach ($file in $path) 
{

$Excelfilename = $file.fullname
$CSVfilename = "" + $file.Basename

$xlCSV=6 

$Excel = New-Object -comobject Excel.Application 
$Excel.Visible = $False 
$Excel.displayalerts=$False 
$Workbook = $Excel.Workbooks.Open($ExcelFileName) 
$Workbook.SaveAs($CSVfilename,$xlCSV) 
$Excel.Quit() 

}

1 个答案:

答案 0 :(得分:0)

之前我遇到过同样的问题,这篇Technet文章非常有用:https://technet.microsoft.com/en-us/library/ff730962.aspx

基本上你做的一切都是正确的,但.Quit()方法并不是你想要的,因为它摆脱了程序而不是com对象。我们需要进一步调用.NET Framework来释放COM对象,然后释放$ Excel变量。

$Excel.Quit()

[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel)

Remove-Variable $Excel

这应该可以为您提供所需的内容并适当地清理您的环境,让您循环回来并对所有.csv进行更改