【问题标题】:Laravel Excel Maatwebsite - SUM function not workingLaravel Excel Maatwebsite - SUM 函数不起作用
【发布时间】:2021-05-26 18:42:24
【问题描述】:

我在 Laravel 5.8 中使用 Maatwebsite 3.1。
我生成了一个包含价格列的电子表格,我想对其进行总结。为此,我有以下代码:

<?php

namespace App\Exports;

use Maatwebsite\Excel\Concerns\FromCollection;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use Maatwebsite\Excel\Concerns\WithStyles;

use \Illuminate\Support\Collection;

class MenuExport implements FromCollection, WithStyles
{
    private $data;

    function __construct($data) {
        $this->data = $data;
    }

    public function styles(Worksheet $sheet)
    {
        $numOfRows = count($this->data);
        $totalRow = $numOfRows + 1;

        // Add cell with SUM formula to last row
        $sheet->setCellValue("B{$totalRow}", "=SUM(B1:B{$numOfRows})");
    }

    public function collection()
    {
        // Add new row with Total cell
        $extendedArr = [
            $this->data,
            ['Total:']
        ];
        
        return new Collection($extendedArr);
    }
}

生成的excel其实有SUM函数,但是显示的是0。 例如,我用以下数据调用导出器:

$data = [
    ['Coffee', 1.8],
    ['Cake', 3.6],
    ['Toast', 2.5]
];
        
return Excel::download(new MenuExport($data), "menu.xlsx");

这是结果:

如果我剪切函数单元格内容然后粘贴它 - 我会得到想要的结果:

知道有什么问题吗?

【问题讨论】:

    标签: php laravel maatwebsite-excel


    【解决方案1】:

    实际上比我想象的要容易。
    我所要做的就是添加WithPreCalculateFormulas:

    :
    use Maatwebsite\Excel\Concerns\WithPreCalculateFormulas;
    
    class MenuExport implements FromCollection, WithStyles, WithPreCalculateFormulas
    {
    

    来自documentation:

    Maatwebsite\Excel\Concerns\WithPreCalculateFormulas
    强制 PhpSpreadsheet 重新计算工作簿中的所有公式时 保存,以便预先计算的值可立即用于 打开文件时使用 MS Excel 或其他办公电子表格查看器。

    【讨论】:

      猜你喜欢
      • 2019-05-15
      • 2019-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 2021-09-17
      • 1970-01-01
      • 2019-05-30
      相关资源
      最近更新 更多