php电子表格打印:选择纸槽

问题描述 投票:0回答:1

如果我使用 phpspreadsheet 文档中的以下代码:

$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load('template.xlsx');
$worksheet = $spreadsheet->getActiveSheet();
$worksheet->getCell('A1')->setValue('John');
$worksheet->getCell('A2')->setValue('Smith');
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');
$writer->save('write.xls');

加载的模板为我的打印机设置了特定的纸张类型,因此我可以简单地打印它而无需更改任何内容。但是,当使用上述代码时,此设置丢失,并使用我的打印机的默认纸槽。 这导致我无法使用 powershell 打印 excel 文件,因为我需要手动设置纸张类型。 有人知道如何解决这个问题,无论是从 php 内部还是用于打印它的 powershell 中? 我使用的powershell代码是: 参数( [字符串]$名称 )

$xl = New-Object -ComObject Excel.Application
$xl.Visible = $false
$filename = "C:\somepath\" + $name + ".xlsx"
$wb = $xl.Workbooks.Open($filename)
$ws = $wb.WorkSheets.Item(1)
$ws.PrintOut()
$xl.quit()
powershell phpspreadsheet
1个回答
0
投票

仅使用 PageSetup 即可进行打印的详细设置。

use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
$worksheet -> getPageSetup() -> setPrintArea('A1:A2'); //set area for printing
$worksheet -> getPageSetup() -> setPaperSize(PageSetup::PAPERSIZE_A4); //size of paper
$worksheet -> getPageSetup() -> setOrientation(PageSetup::ORIENTATION_PORTRAIT); //orientation
$worksheet -> getPageSetup() -> setVerticalCentered(false); //unlock centering
$worksheet -> getPageSetup() -> setHorizontalCentered(false); //unlock centering

参考

页面设置

© www.soinside.com 2019 - 2024. All rights reserved.