首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Excel工作表导出到PDF文件时的奇怪Powershell行为

将Excel工作表导出到PDF文件时的奇怪Powershell行为
EN

Stack Overflow用户
提问于 2021-06-15 07:52:21
回答 1查看 257关注 0票数 1

我编写了一个Powershell脚本,它将Excel工作簿中的每个工作表转换为单独的PDF-文件。当输出PDF-文件适合于一个页面时,下面的代码正常工作。

当工作表的内容很大,并且通常应该保存到两个页面时,它会尝试将其放在一个页面上。这会导致单元格重叠页脚。应该在下一页。

错误消息显示ExportAsFixedFormat方法中的一个错误。此异常仅显示输出PDF应跨两个或多个页面导出的时间。

值不属于预期范围。(System.ArgumentException)

为了调试这一点,我遇到了PageSetup属性。我希望看到它包含的页面数量,所以我将Write-Host $Worksheet.PageSetup.Pages添加到内部循环中。

奇怪的是,添加这个Write-Host解决了这个问题。现在,内容在多个页面上传播。更奇怪的是,当PDF文件被正确创建时,错误信息仍然存在。我有两个问题:

  • 添加Write-Host语句是如何修复导出的?
  • 如何消除错误消息(而不只是抑制它)?

我还使用了一些属性,如PageSetup.FitToPagesTall (设置为2)和PageSetup.FitToPagesWide (设置为1),但这扰乱了PDF文件的布局。

代码语言:javascript
运行
复制
$Formats = "Microsoft.Office.Interop.Excel.xlFixedFormatType" -as [type]

$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $false

$ExcelFiles = Get-ChildItem $ExcelDirectory -Filter "*.xlsx" -Recurse

foreach($ExcelFile in $ExcelFiles)
{
    $Workbook = $Excel.Workbooks.Open($ExcelFile.FullName)
    $Workbook.Saved = $true

    foreach($Worksheet in $Workbook.Worksheets)
    {

        if($Worksheet.Name -eq "Voorblad")
        {
            continue
        }

        # Some algorithm to calculate the output file name.
        # Not relevant for this question. Results in the variable $SheetPrettyName

        $OutputPath = "$ExcelDirectory\" + $SheetPrettyName + ".pdf"

        $Worksheet.ExportAsFixedFormat($Formats::xlTypePDF, $OutputPath)
    }

    $Excel.Workbooks.Close()
}

$Excel.Quit()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-15 11:06:41

因此,获得错误消息五次和导出必须在五个点拆分PDF是没有关系的。Excel文件是通过许多模板创建的,这些模板作为不可见工作表驻留在工作簿中。巧合的是,有五个隐藏的工作表。

该程序试图导出和保存这些工作表。但从逻辑上讲,没有做到这一点。

我在循环中添加了一个检查,检查工作表是否为隐藏的或非常隐藏的。这些可见性选项分别由1或2表示(-1表示可见)。

代码语言:javascript
运行
复制
if(($Worksheet.Name -eq "Voorblad") -or ($Worksheet.Visible -ne -1))
{
    continue
}

我还能够删除我之前添加的Write-Host,脚本保持了功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67982184

复制
相关文章

相似问题

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