我试图将.xls文件转换为.xlxs --我尝试了许多这种代码的变体,但是每次我遇到这样的错误信息时:
Exception de l‘p涌l de cvec.avec/ avec 2(S)论点: Au caractère C:\temp\xlsx.ps1:18 :6
- CategoryInfo : NotSpecified: (:) [], MethodInvocationException
- FullyQualifiedErrorId : 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() 你知道工作配方吗?
发布于 2014-08-13 15:13:01
传入SaveAs方法的常量通常表示数值,而不是字符串。在您的例子中,第二个参数可能应该是51 (xlWorkbookDefault),如文档所示的here。另外两个字符串("xlNoChange",哪个应该是1,和"xlLocalSessionChanges",哪个应该是2)也是这样。您需要使用数值,或者自己定义常量,例如:
$xlWorkbookDefault = 51
$xlNoChange = 1
$xlLocalSessionChanges = 2此外,不能对应该保留默认值的参数使用$null。使用[Type]::Missing代替。
改变这一点:
$opendoc.saveas($basename,$saveFormat,$null,$null,$false,$false,"xlNoChange","xlLocalSessionChanges")这方面:
$opendoc.SaveAs($basename, 51, [Type]::Missing, [Type]::Missing, $false, $false, 1, 2)https://stackoverflow.com/questions/25288372
复制相似问题