【问题标题】:How to display correct format data while exporting excel in php?在php中导出excel时如何显示正确的格式数据?
【发布时间】:2022-01-26 23:37:30
【问题描述】:

我正在使用matwebsite包下载excel文件,它下载得很完美,但是某些列值以其他格式显示(1244+67866)(注意:-当时显示的字母更多),如何解决这个错误请帮我解决这个问题..

class BooksExport implements FromCollection, WithHeadings, WithEvents, ShouldAutoSize
{

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

    public function collection()
    {
        return collect($this->data);
    }

    public function headings(): array
    {
        return [
            'Object',
            'Id',
            'Return date',
            'status',
         'amount'
        ];
    }


    public function registerEvents(): array
    {
        return [
            AfterSheet::class    => function (AfterSheet $event) {
                // All headers - set font size to 14
                $cellRange = 'A1:E1';
                $event->sheet->getDelegate()->getStyle($cellRange)->getFont()->setSize(12);

                // Apply array of styles to B2:G8 cell range
                $styleArray = [
                    'borders' => [
                        'outline' => [
                            'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
                            'color' => ['argb' => 'FFFF0000'],
                        ]
                    ]
                ];
            },
        ];
    }
}

my downloaded excel

object      id          return-date         status         amount  
Book1       345         24-01-2020          returned       98+99 // original is ==> 9898989

Book2       543         22-01-566           done           1425 

【问题讨论】:

    标签: php excel laravel


    【解决方案1】:

    您可以通过这种方式为列分配格式:

    在导出目录中的导出类中,您必须实现一个方法,例如:

    public function columnFormats(): array
        {
            return [
              'A' => NumberFormat::FORMAT_NUMBER,
              'B' => NumberFormat::FORMAT_DATE_DATETIME,
              'C' => NumberFormat::FORMAT_TEXT,
              'D' => NumberFormat::FORMAT_TEXT,
              'E' => NumberFormat::FORMAT_TEXT,
              'F' => NumberFormat::FORMAT_NUMBER,
            ];
        }
    

    您可以做各种格式,只需输入NumberFormat:: 并滚动浏览所有可能性

    【讨论】:

    • 一列是字符串类型的,当时我该怎么办
    • @user17426459 你是什么意思?我认为在他们的网站上是一个解释了所有可能性的文档
    • 我尝试了你的解决方案,我的原始数据是6666666666666666666,但输出是6666666666660000
    • 然后看看这个库的文档。我不是来给你完美的解决方案,只是给你一个正确方向的提示
    猜你喜欢
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多