如何解决Laravel Excel Maatwebsite - SUM 函数不起作用
我在 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");
如果我剪切函数单元格内容然后粘贴它 - 我得到了想要的结果:
知道出了什么问题吗?
解决方法
实际上比我想象的要容易。
我所要做的就是添加 WithPreCalculateFormulas
:
:
use Maatwebsite\Excel\Concerns\WithPreCalculateFormulas;
class MenuExport implements FromCollection,WithStyles,WithPreCalculateFormulas
{
Maatwebsite\Excel\Concerns\WithPreCalculateFormulas
强制 PhpSpreadsheet 重新计算工作簿中的所有公式时
保存,以便预先计算的值立即可用
打开文件时使用 MS Excel 或其他办公电子表格查看器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。