我是靠谱客的博主 热心星星,最近开发中收集的这篇文章主要介绍使用PowerShell 脚本 将Word、Excel转化为 PDF 文件 并导出,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

公司要做一个软件,要将Word、Excel 转化为PDF文件 ,于是老板看到有用PowerShell 脚本写的excel转化为PDF 的代码,于是就交给了我。

准备

  1. PowerShell 现在电脑都内嵌的有
  2. 电脑要安装的有 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 文件 并导出所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部