无法正确设置setPrintArea

时间:2018-06-28 17:20:29

标签: php phpspreadsheet phpoffice

我正在使用phpspreadsheet v1.3.1。

我正在构建一个excel文件(下载),并且一切正常。唯一的问题是定义setPrintArea ...它总是使我将标准PrintArea返回到excel。基本上,我建立了excels行,并在定义了printArea之后...之前我也尝试过但没有成功。

$spreadsheet = IOFactory::load("template.xlsx");
$worksheet = $spreadsheet->getActiveSheet();

foreach ($rows AS $k => $v ) {
    $worksheet->getCell('F' . ($k + 3))->setValue($v);
    $worksheet->getCell('G' . ($k + 3))->setValue($v);
}

$worksheet->getPageSetup()->setPrintArea('A1:AG58');

...

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');
$writer = IOFactory::createWriter($spreadsheet, 'Xls');
$writer->save('php://output'); //-- force download version

该区域中有58行,但我无法将该区域设置为“ AG”单元格...基本上,我想将我所有的excel都打印在一页上,而不是8。

谢谢!

1 个答案:

答案 0 :(得分:0)

setPrintArea()定义要打印的内容,而不是应如何打印的内容。 要在一个页面上显示所有A-> AG列和58行,您可以使用:

$worksheet->getPageSetup()->setFitToPage(true);

或限制为一维

$worksheet->getPageSetup()->setFitToWidth(1);
$worksheet->getPageSetup()->setFitToHeight(0);

https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#setting-printer-options-for-excel-files