35 lines
1.5 KiB
PowerShell
35 lines
1.5 KiB
PowerShell
$ErrorActionPreference='Stop'
|
|
function Retry([scriptblock]$Action){for($i=0;$i -lt 40;$i++){try{return & $Action}catch{Start-Sleep -Milliseconds 250}};throw 'Excel busy'}
|
|
$root=Split-Path $PSScriptRoot -Parent
|
|
$excel=$null;$book=$null
|
|
try {
|
|
$excel=New-Object -ComObject Excel.Application
|
|
Retry {$excel.Visible=$true}
|
|
Retry {$excel.DisplayAlerts=$false}
|
|
Retry {$excel.AskToUpdateLinks=$false}
|
|
Retry {$excel.AutomationSecurity=3}
|
|
$book=Retry {$excel.Workbooks.Open((Join-Path $root '교각수량산출.xlsx'),0,$true)}
|
|
$excel.ActiveWindow.DisplayHeadings=$false
|
|
$excel.ActiveWindow.DisplayGridlines=$false
|
|
$items=@(
|
|
@('3.1 수량산출기준_토공','A2:AA95','criteria-earth'),
|
|
@('3.1 수량산출기준_구조체 현황','A2:AC51','criteria-status'),
|
|
@('3.1 수량산출기준_구조체','A2:AC102','criteria-structure'),
|
|
@('3.2 관련변수','A2:AA16','variables-diagram')
|
|
)
|
|
foreach($item in $items){
|
|
$sheet=$book.Worksheets.Item($item[0])
|
|
$sheet.PageSetup.PrintArea=$item[1]
|
|
$sheet.PageSetup.PrintHeadings=$false
|
|
$sheet.PageSetup.PrintGridlines=$false
|
|
$sheet.PageSetup.Zoom=$false
|
|
$sheet.PageSetup.FitToPagesWide=1
|
|
$sheet.PageSetup.FitToPagesTall=1
|
|
$sheet.ExportAsFixedFormat(0,(Join-Path $root ('.cache/'+$item[2]+'.pdf')))
|
|
Write-Output $item[2]
|
|
}
|
|
} finally {
|
|
if($book){Retry {$book.Close($false)};[void][Runtime.InteropServices.Marshal]::ReleaseComObject($book)}
|
|
if($excel){Retry {$excel.Quit()};[void][Runtime.InteropServices.Marshal]::ReleaseComObject($excel)}
|
|
}
|