PhpSpreadsheet 导出excel php7.4版本
2025-05-22
//php7.4版本 可用,更高版本未测试
       set_time_limit(0);
        ini_set('memory_limit', '1024M');
        // 实例化excel
       include  'xxxxxx/autoload.php';
        $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();

        // 获取当前活动的工作表
        $sheet = $spreadsheet->getActiveSheet();
        $sheet_name = '文件名称';
        $fileName = '文件名称_'.date('Ymd_His');
        $fileNameFull = iconv("utf-8", "gb2312", $fileName.'.xlsx');
        $strs = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZ',1);
        $sheet->setTitle(  $sheet_name );




        $keys = [];
        $titles = [
            '字段1',
            '字段2',
            '字段3',
            '字段',
            '字段5',
        ];
        foreach ($titles as $k=>$vv){
            $apped =  ($k ) % 26 ;
            $key =  intval($k / 26) ;
            $kk = '';
            if($key  > 0){
                $kk .= $strs[$key - 1];
            }
            $kk .= $strs[$apped];
            $keys[] =  $kk;
        }

        foreach ($keys as $k=>$key){
            $sheet->setCellValue($key.'1',$titles[$k]);
            $sheet->getColumnDimension($key)->setAutoSize(true);

            $cell = $sheet->getCell($key.'1',$titles[$k]);
            $font = $cell->getStyle()->getFont();
            $font->setName('宋体');
            $font->setBold(true);
            $font->setSize(10);

        }


        $o_data = [];//原始数据

        $data = [];
        foreach ($o_data as $vv){//加工数据
            $data[] = [
                $vv['xxxx'],
                $vv['xxxx'],
                $vv['xxxx'],
                $vv['xxxx'],
                $vv['xxxx'],
            ];
        }

        foreach ($data as $k=>$vv){
            foreach ($keys as $k2=>$key){
                $sheet->setCellValue($key.($k+2),$vv[$k2]);

                $cell = $sheet->getCell($key.($k+2),$vv[$k2]);
                $font = $cell->getStyle()->getFont();
                $font->setName('宋体');
                $font->setSize(10);
            }
        }

        ob_clean();
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="'.$fileNameFull);
        header('Cache-Control: max-age=0');

        $writer =new  \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
        $writer->save('php://output');

        exit;