Loï*_*HEL 2 com excel powershell
我正在尝试将 .xls 文件转换为 .xlxs 我尝试了此代码的许多变体,但每次遇到此错误消息时:
例外 lors de l'appel de « SaveAs » avec « 2 » 参数:« La méthode SaveAs de la classe Workbook a échoué。» Au caractère C:\temp\xlsx.ps1:18 : 6
- 试试{$opendoc.saveas($basename, $saveFormat)}
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : NotSpecified: (:) [], MethodInvocationException
- FullQualifiedErrorId : ComMethodTargetInvocation
这是我的代码:
$excel = new-object -comobject excel.application
$excel.Visible = $false
$saveFormat = "xlOpenXMLWorkbook";
ls c:\temp\*.xls | %{
$opendoc = $excel.workbooks.open($_.FullName)
$excel.DisplayAlerts =$false
$basename = $_.basename
try{
$opendoc.saveas($basename,$saveFormat,$null,$null,$false,$false,"xlNoChange","xlLocalSessionChanges")
# tried this one and got same error : $opendoc.saveas($basename, $saveFormat)}
}
catch{
$opendoc.close();$excel.quit()
$_
}
$opendoc.close();
}
$excel.quit()
Run Code Online (Sandbox Code Playgroud)
你知道工作食谱吗?
传递给SaveAs
方法的常量通常表示数值,而不是字符串。在您的情况下,第二个参数可能应该是 51( xlWorkbookDefault
) 记录here
。其他两个字符串("xlNoChange"
,应为 1,而"xlLocalSessionChanges"
,应为 2)也是如此。您需要使用数值,或自己定义常量,例如:
$xlWorkbookDefault = 51
$xlNoChange = 1
$xlLocalSessionChanges = 2
Run Code Online (Sandbox Code Playgroud)
此外,您不能使用$null
for 应保留默认值的参数。使用[Type]::Missing
来代替。
改变这个:
$opendoc.saveas($basename,$saveFormat,$null,$null,$false,$false,"xlNoChange","xlLocalSessionChanges")
Run Code Online (Sandbox Code Playgroud)
进入这个:
$opendoc.SaveAs($basename, 51, [Type]::Missing, [Type]::Missing, $false, $false, 1, 2)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10479 次 |
最近记录: |