导出Excel时,表格中不显示数字0的解决方法

使用maatwebsite/excel 导出excel表格时,发现数字0比较难处理,在导出的数据中经常不显示数字0,而是显示显示空白

方案一:使用'符号

这种方式在excel 中也会原样显示`0,极不协调
"`0"
"'0"

方案二:设置数字格式

use Maatwebsite\Excel\Concerns\FromArray;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
// 处理数字
use PhpOffice\PhpSpreadsheet\Cell\Cell;
use PhpOffice\PhpSpreadsheet\Cell\DataType;
use PhpOffice\PhpSpreadsheet\Cell\DefaultValueBinder;

class CustomExport extends DefaultValueBinder implements WithHeadings, WithMapping, FromArray
{
    private $list;

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

    public function array(): array
    {
        return $this->list;
    }

    // 单独处理数字格式
    public function bindValue(Cell $cell, $value)
    {
        if (is_numeric($value)) {
            $cell->setValueExplicit($value, DataType::TYPE_NUMERIC);
            return true;
        }

        return parent::bindValue($cell, $value);
    }

    public function headings(): array
    {
        return [
            '订单号',
            '收货人',
            '价格',
            '支付时间'
        ];
    }

    public function map($row): array
    {
        return [
            $row['order']['no'],
            $row['order']['consignee'],
            !empty($row['order']['price']) ? $row['order']['price'] : '0',
            $row['order']['pay_at'] ?? '', // 支付时间
        ];
    }
}