【问题标题】:PHPSpreadsheet cannot set worksheet marginPHPSpreadsheet 无法设置工作表边距
【发布时间】:2019-06-01 20:51:40
【问题描述】:

您好,这个插件有点问题,这是出错的代码

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 的一个实例,浮点数 给定

我只是按照这个文档https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#page-margins 使用maatwebsite\Excel,顺便说一下我使用的是 Laravel 5.7。

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

【问题讨论】:

  • 您能否发布您尝试使用的完整资源?

标签: excel laravel phpspreadsheet


【解决方案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 的东西)。

【讨论】:

  • 是的,宏函数来自Maatwebsite\Excel,我将在Export 中调用类似的函数$event->sheet->mergeCells('S1:S4');。类似的东西会被调用。宏函数为Sheet::macro('mergeCells', function (Sheet $sheet, string $cellRange) { $sheet->getDelegate()->mergeCells($cellRange); });
猜你喜欢
  • 1970-01-01
  • 2018-05-08
  • 2019-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 2013-11-15
相关资源
最近更新 更多