Не могу правильно установить setPrintArea - PullRequest
0 голосов
/ 28 июня 2018

Я использую v1.3.1 phpspreadsheet.

Я создаю файл 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 голосов
/ 07 ноября 2018

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

...