You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将同一工作簿多Excel工作表转为同名独立PDF的PowerShell脚本

PowerShell脚本:将Excel工作簿的多个工作表导出为独立PDF文件

要实现把Excel工作簿里的每个工作表单独导出为以工作表名称命名的PDF文件,你提供的原脚本是将整个工作簿导出成单个PDF,不符合需求。以下是修正后的完整脚本:

# 设置目标路径,替换为你的Excel文件所在路径
$path = "I:\"
$xlFixedFormat = "Microsoft.Office.Interop.Excel.xlFixedFormatType" -as [type]
# 获取路径下所有Excel文件(包括子目录)
$excelFiles = Get-ChildItem -Path $path -Include *.xls, *.xlsx -Recurse
# 创建Excel COM对象
$objExcel = New-Object -ComObject Excel.Application
$objExcel.Visible = $false

foreach ($wb in $excelFiles) {
    # 打开工作簿,只读模式
    $workbook = $objExcel.Workbooks.Open($wb.FullName, 3)
    # 获取工作簿所在目录,用于保存PDF
    $outputDir = $wb.DirectoryName

    # 遍历工作簿中的每个工作表
    foreach ($worksheet in $workbook.Worksheets) {
        # 生成PDF文件名:工作簿名_工作表名.pdf
        $pdfFileName = "$($workbook.BaseName)_$($worksheet.Name).pdf"
        $pdfPath = Join-Path -Path $outputDir -ChildPath $pdfFileName

        Write-Host "正在导出: $pdfPath"
        # 导出当前工作表为PDF
        $worksheet.ExportAsFixedFormat($xlFixedFormat::xlTypePDF, $pdfPath)
    }

    # 关闭工作簿,不保存更改
    $workbook.Close($false)
}

# 退出Excel并清理COM对象
$objExcel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcel) | Out-Null
Remove-Variable objExcel

关键说明:

  • 脚本会遍历指定路径下所有Excel文件,包括子目录中的文件
  • 每个工作表导出的PDF命名规则为[工作簿名称]_[工作表名称].pdf,可根据需求自行调整
  • 使用只读模式打开工作簿,避免修改原文件
  • 最后添加了COM对象的清理步骤,防止Excel进程残留

内容的提问来源于stack exchange,提问作者Zach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 00:27:04