使用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:\powershell\excels\"  #Path to Excel spreadsheets to save to PDF  保存到pdf的excel電子表格路徑
[string]$savepath = "D:\powershell\pdfs\"
[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:\powershell\words\"  #Path to Excel spreadsheets to save to PDF  保存到pdf的excel電子表格路徑
[string]$savepath = "D:\powershell\pdfs\"
[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 的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章