【发布时间】:2021-08-31 01:32:26
【问题描述】:
我编写了一个 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文件的布局。
$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()
【问题讨论】:
标签: excel powershell com powershell-5.0