Files
Pier_v1/수량산출/tools/capture-reference.ps1
T

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)}
}