【问题标题】:Laravel: How to change Time Stamps Format in Excel Export?Laravel:如何在 Excel 导出中更改时间戳格式?
【发布时间】:2020-11-19 06:09:18
【问题描述】:

我正在生成 Excel 导出,我想将 excel 文件中的时间戳格式从 2020-07-29 13:56:09 更改为 DD:MM:YYYY。 如何更改我的导出类以格式化我的 Excel 文件中的时间戳列,顺便说一句,日期在 Excel 文件的“E”列中。 我的导出类:

use App\outbound_detail;
use App\outbound_temp;
use Illuminate\Contracts\View\View;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Events\AfterSheet;

class ReleaseExportView implements FromCollection, WithHeadings, ShouldAutoSize, WithEvents
{
    protected $reference;

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

    public function collection()
    {
        return outbound_detail::where('reference', $this->reference)->get([
            'reference', 'sku_parent', 'sku_child', 'cases', 'updated_at'
        ]);
    }

    public function headings(): array
    {
        return [
            'Reference',
            'SKU Parent',
            'SKU Child',
            'Cases Released',
            'Date Created'
        ];
    }
    // ...

    /**
     * @return array
     */
    public function registerEvents(): array
    {
        return [
            AfterSheet::class => function (AfterSheet $event) {
                $cellRange = 'A1:W1'; // All headers
                $event->sheet->getDelegate()->getStyle($cellRange)->getFont()->setSize(14);
            },
        ];
    }
}

【问题讨论】:

    标签: php excel laravel timestamp maatwebsite-excel


    【解决方案1】:

    您可以使用column formatting。 试试这个:

    // ...
    use PhpOffice\PhpSpreadsheet\Shared\Date;
    use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
    use Maatwebsite\Excel\Concerns\WithColumnFormatting;
    
    class ReleaseExportView implements FromCollection, WithHeadings, ShouldAutoSize, WithEvents, WithColumnFormatting
    {
        // ...
    
        public function map($reference): array
        {
            return [
                $reference->reference,
                $reference->sku_parent,
                $reference->sku_child,
                $reference->cases,
                Date::dateTimeToExcel($reference->updated_at)
            ];
        }
    
        public function columnFormats(): array
        {
            return [
                'E' => NumberFormat::FORMAT_DATE_DDMMYYYY
            ];
        }
    }
    

    【讨论】:

    • 类 'App\Exports\NumberFormat' 未找到,要导入哪个类?
    • @KundanNasir 我的错。这是use PhpOffice\PhpSpreadsheet\Style\NumberFormat
    • @KundanNasir 这很奇怪,示例代码来自一个工作应用程序。看起来我也忘了添加use PhpOffice\PhpSpreadsheet\Shared\Date;。您是否将WithColumnFormatting 添加到类实现中?如果这也不起作用,您可以尝试$reference->updated->format('d:m:Y') 作为最后的手段吗?
    • 你说的都试过了,日期格式还是和db时间戳一样
    【解决方案2】:

    在您的 Reference 模型上,添加以下内容:

    public function getUpdatedAtAttribute($date)
    {
        return Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('d:m:Y');
    }
    

    【讨论】:

    猜你喜欢
    • 2018-11-27
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    相关资源
    最近更新 更多