如何用PowerShell为文件夹中所有Excel工作簿统一设置打印配置?
用PowerShell批量为Excel文件应用统一打印格式配置
实现步骤与脚本
以下脚本会遍历指定文件夹下的所有Excel文件(支持.xlsx、.xls、.xlsb,可扩展),为每个工作簿的所有工作表批量设置统一打印格式,完成后自动保存并关闭文件。
# 1. 配置基础参数 $folderPath = "C:\Your\Target\Excel\Folder" # 替换为你的Excel文件夹路径 $excelFileTypes = @("*.xlsx", "*.xls", "*.xlsb") # 可按需添加/移除文件类型 # 2. 创建Excel应用对象,后台静默运行 $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $false # 覆盖保存时不弹出确认提示 # 3. 遍历目标文件夹中的所有Excel文件 $excelFiles = Get-ChildItem -Path $folderPath -Include $excelFileTypes -Recurse foreach ($file in $excelFiles) { # 打开当前工作簿 $workbook = $excel.Workbooks.Open($file.FullName) # 遍历工作簿中的所有工作表 foreach ($worksheet in $workbook.Worksheets) { # -------------------------- # 以下为打印格式配置,按需修改 # -------------------------- # 设置页边距(单位:英寸,转换为Excel点) $worksheet.PageSetup.LeftMargin = $excel.InchesToPoints(0.75) $worksheet.PageSetup.RightMargin = $excel.InchesToPoints(0.75) $worksheet.PageSetup.TopMargin = $excel.InchesToPoints(1) $worksheet.PageSetup.BottomMargin = $excel.InchesToPoints(1) $worksheet.PageSetup.HeaderMargin = $excel.InchesToPoints(0.5) $worksheet.PageSetup.FooterMargin = $excel.InchesToPoints(0.5) # 设置纸张大小(A4为例,其他可选值:xlPaperLetter、xlPaperLegal等) $worksheet.PageSetup.PaperSize = $excel.XlPaperSize.xlPaperA4 # 设置打印区域为工作表已使用的范围 $worksheet.PageSetup.PrintArea = $worksheet.UsedRange.Address # 水平居中打印 $worksheet.PageSetup.CenterHorizontally = $true $worksheet.PageSetup.CenterVertically = $false # 设置缩放比例(90%),或改为FitToPagesWide=1实现自适应1页宽 $worksheet.PageSetup.Zoom = 90 # $worksheet.PageSetup.FitToPagesWide = 1 # $worksheet.PageSetup.FitToPagesTall = $false # 设置页眉页脚 $worksheet.PageSetup.LeftHeader = "XX公司报表" $worksheet.PageSetup.CenterHeader = "&F" # 插入当前文件名 $worksheet.PageSetup.RightHeader = "&D" # 插入当前日期 $worksheet.PageSetup.LeftFooter = "页码 &P/&N" # 当前页码/总页码 $worksheet.PageSetup.RightFooter = "打印时间:&T" # 当前时间 # 打印网格线 $worksheet.PageSetup.PrintGridlines = $true # 设置每页重复打印标题行(第1行为例) $worksheet.PageSetup.PrintTitleRows = "$1:$1" } # 保存修改并关闭工作簿 $workbook.Save() $workbook.Close() } # 4. 清理Excel COM对象,避免进程残留 $excel.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($worksheet) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null [System.GC]::Collect() [System.GC]::WaitForPendingFinalizers() Write-Host "所有Excel文件的打印格式配置已批量应用完成!"
注意事项
- 路径替换:务必将
$folderPath替换为你的实际Excel文件夹路径 - 配置调整:根据需求修改打印格式参数(如纸张大小、页边距、缩放规则等)
- 环境准备:确保本地安装了Microsoft Excel,且运行脚本前关闭所有Excel窗口,避免进程冲突
- 测试建议:先选取少量文件测试脚本,确认配置符合预期后再批量处理
- 文件类型扩展:若需要处理其他格式,在
$excelFileTypes数组中添加对应后缀
内容的提问来源于stack exchange,提问作者Ken
相关产品推荐
相关产品推荐

