PHPSpreadsheet无法设置工作表边距

时间:2019-01-07 07:32:15

标签: excel laravel phpspreadsheet

嗨,我对此插件有一点问题,这是导致错误的代码

Sheet::macro('setPageMargins', function (Sheet $sheet, float $top = 1, float $right = 0.75, float $bottom = 1, float $left = 0.75) {
    $sheet->getDelegate()->getPageMargins()->setTop($top);
    $sheet->getDelegate()->getPageMargins()->setRight($right);
    $sheet->getDelegate()->getPageMargins()->setLeft($left);
    $sheet->getDelegate()->getPageMargins()->setBottom($bottom);
});

这是错误

  

参数1传递给   PhpOffice \ PhpSpreadsheet \ Worksheet \ Worksheet :: setPageMargins()必须为   浮动的PhpOffice \ PhpSpreadsheet \ Worksheet \ PageMargins的实例   给

我只是通过使用Laravel 5.7来使用maatwebsite\Excel来遵循本文档https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#page-margins

问题是如何设置边距?因为我认为文档有误,请帮助

1 个答案:

答案 0 :(得分:1)

我相信您应该这样做:

// Create a page margins object.
$pageMargins = new \PhpOffice\PhpSpreadsheet\Worksheet\PageMargins();
$pageMargins->setTop(1);
$pageMargins->setRight(0.75);
$pageMargins->setBottom(1);
$pageMargins->setLeft(0.75);

Sheet::macro('setPageMargins', function($sheet, $pageMargins));

根据代码,它显示为public function setPageMargins(PageMargins $pValue)

https://github.com/PHPOffice/PhpSpreadsheet/blob/0e8fde9be6d3918ffe030bed0ba0297bfe330c4d/src/PhpSpreadsheet/Worksheet/Worksheet.php#L966

您的::macro调用了setPageMargins函数,尽管这种模式使我感到困惑(似乎有些Maatwebsite\Excel东西)。