Hos*_*ari 6 excel number-formatting laravel laravel-excel maatwebsite-excel
我有一个金额列,当数字没有小数时我想设置整数格式,当数字有小数时设置双精度格式。在这两种方式中,我想为数字添加分隔符。目前,我使用bindValue,但Excel单元格不知道金额列是数字格式,我应该选择它们并将它们转换为数字。
public function bindValue(Cell $cell, $value)
{
if (is_int($value)) {
$cell->setValueExplicit($value, '#,##0');
return true;
}else if (is_double($value)) {
$cell->setValueExplicit($value, '#,##0.00');
return true;
}else{
$cell->setValueExplicit($value, DataType::TYPE_STRING);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
我该如何修复它?
小智 1
您可以使用以下方法格式化整个列
WithColumnFormatting namespace App\Exports;
use PhpOffice\PhpSpreadsheet\Shared\Date;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use Maatwebsite\Excel\Concerns\WithMapping;
class InvoicesExport implements WithColumnFormatting, WithMapping
{
public function map($invoice): array
{
return [];
}
public function columnFormats(): array
{
return [
'B' => NumberFormat::FORMAT_NUMBER_00,
'C' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1,
];
}
}
Run Code Online (Sandbox Code Playgroud)
AfterSheet事件。有关更多详细信息,请参阅此处的相关文档。