首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >powershell中的Excel workbooks.saveas()错误

powershell中的Excel workbooks.saveas()错误
EN

Stack Overflow用户
提问于 2014-08-13 14:08:23
回答 1查看 12.4K关注 0票数 2

我试图将.xls文件转换为.xlxs --我尝试了许多这种代码的变体,但是每次我遇到这样的错误信息时:

Exception de l‘p涌l de cvec.avec/ avec 2(S)论点: Au caractère C:\temp\xlsx.ps1:18 :6

  • 尝试{$opendoc.saveas($basename,$saveFormat)}
代码语言:javascript
复制
- CategoryInfo          : NotSpecified: (:) [], MethodInvocationException                                            
- FullyQualifiedErrorId : ComMethodTargetInvocation

这是我的代码:

代码语言:javascript
复制
$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()    

你知道工作配方吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-13 15:13:01

传入SaveAs方法的常量通常表示数值,而不是字符串。在您的例子中,第二个参数可能应该是51 (xlWorkbookDefault),如文档所示的here。另外两个字符串("xlNoChange",哪个应该是1,和"xlLocalSessionChanges",哪个应该是2)也是这样。您需要使用数值,或者自己定义常量,例如:

代码语言:javascript
复制
$xlWorkbookDefault     = 51
$xlNoChange            =  1
$xlLocalSessionChanges =  2

此外,不能对应该保留默认值的参数使用$null。使用[Type]::Missing代替。

改变这一点:

代码语言:javascript
复制
$opendoc.saveas($basename,$saveFormat,$null,$null,$false,$false,"xlNoChange","xlLocalSessionChanges")

这方面:

代码语言:javascript
复制
$opendoc.SaveAs($basename, 51, [Type]::Missing, [Type]::Missing, $false, $false, 1, 2)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25288372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档