概述
公司要做一个软件,要将Word、Excel 转化为PDF文件 ,于是老板看到有用PowerShell 脚本写的excel转化为PDF 的代码,于是就交给了我。
准备
- PowerShell 现在电脑都内嵌的有
- 电脑要安装的有 Microsoft Office 或者有WPS,但是WPS要设置兼容
2.1 在WPS中找到设置。
2.2 .打开高级设置 。
2.3 。选择兼容 选择后要重启电脑才能能生效。
开始上代码。
EXCEL 转化 PDF文件
#UPDATE DATA IN EXCEL FILES 更新Excel文件中的数据
#THEN CREATE PDF FILE Then 建立PDF文档
[string]$path = "D:powershellexcels" #Path to Excel spreadsheets to save to PDF 保存到pdf的excel电子表格路径
[string]$savepath = "D:powershellpdfs"
[string]$dToday = Get-Date -Format "yyyyMMdd"
$xlFixedFormat = "Microsoft.Office.Interop.Excel.xlFixedFormatType" -as [type]
# Get-ChildItem 在一个或多个指定位置获取项目和子项目
$excelFiles = Get-ChildItem -Path $path -include *.xls, *.xlsx -recurse
# Create the Excel application object 创建Excel应用程序队象
# New-Object 创建Microsoft .NET Framework或COM对象的实例
$objExcel =New-Object -ComObject excel.application
$objExcel.visible = $false #Do not open individual windows 不打开单个窗口
foreach($wb in $excelFiles)
{
# Path to new PDF with date 带有日期的新的PDF的路径
#Join-Path 将路径和子路径合并为一条路径。
$filepath = Join-Path -Path $savepath -ChildPath ($wb.BaseName + "_" + $dtoday + ".pdf")
# Open workbook - 3 refreshes links 打开工作簿 3秒刷新
$workbook = $objExcel.workbooks.open($wb.fullname, 3)
# 刷新指定工作簿中的所有外部数据范围和数据透视表报表。
$workbook.RefreshAll()
# Give delay to save 延迟保存
Start-Sleep -s 5
# Save Workbook 保存工作簿
$workbook.Saved = $true
"saving $filepath"
#Export as PDF 导出为PDF
$workbook.ExportAsFixedFormat($xlFixedFormat::xlTypePDF, $filepath)
$objExcel.Workbooks.close()
}
$objExcel.Quit()
Word 转化 PDF
#UPDATE DATA IN EXCEL FILES 更新Word文件中的数据
#THEN CREATE PDF FILE Then 建立PDF文档
[string]$path = "D:powershellwords" #Path to Excel spreadsheets to save to PDF 保存到pdf的excel电子表格路径
[string]$savepath = "D:powershellpdfs"
[string]$dToday = Get-Date -Format "yyyyMMdd"
# $wdExportFormat = "Microsoft.Office.Interop.Word.wdExportFormat" -as [type]
# Get-ChildItem 在一个或多个指定位置获取项目和子项目
$wordFiles = Get-ChildItem -Path $path -include *.docx, *.doc -recurse
# Create the Word application object 创建Word应用程序队象
# New-Object 创建Microsoft .NET Framework或COM对象的实例
$objWord = New-Object -ComObject word.application
$objWord.visible = $false #Do not open individual windows 不打开单个窗口
foreach($wb in $wordFiles)
{
# Path to new PDF with date 带有日期的新的PDF的路径
#Join-Path 将路径和子路径合并为一条路径。
[string]$filepath = Join-Path -Path $savepath -ChildPath ($wb.BaseName + "_" + $dtoday + ".pdf")
# Open workbook - 3 refreshes links 打开工作簿 3秒刷新
$workbook = $objWord.documents.open($wb.fullname)
# 刷新指定工作簿中的所有外部数据范围和数据透视表报表。
# $workbook.RefreshAll() word 没有这个方法
# Give delay to save 延迟保存
Start-Sleep -s 5
# Save Workbook 保存工作簿
$workbook.Saved = $true
"saving $filepath"
#Export as PDF 导出为PDF
# $wdExportFormat::wdExportFormatPDF
# 这里有坑 之前写的 ($filepath,$wdExportFormat::wdExportFormatPDF) 但是会报 ‘值不在预期的范围内’ 。
$workbook.ExportAsFixedFormat($filepath,17)
$objWord.Documents.close()
}
$objWord.Quit()
安装WPS 的 不设置兼容会出现
检索 COM 类工厂中 CLSID 为 {} 的组件时失败
因为转化是基于 Microsoft Office 的
最后
以上就是热心星星为你收集整理的使用PowerShell 脚本 将Word、Excel转化为 PDF 文件 并导出的全部内容,希望文章能够帮你解决使用PowerShell 脚本 将Word、Excel转化为 PDF 文件 并导出所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复