phpoffice/phpspreadsheet导出数据

public function excelExport($filename, $header, $data, $excelName , $format = 'Xls') {// $format只能为 Xlsx 或 Xls
        $newExcel = new Spreadsheet();  //创建一个新的excel文档
        $objSheet = $newExcel->getActiveSheet();  //获取当前操作sheet的对象    

        $objSheet->setTitle($excelName);  //设置当前sheet的标题       
        //设置第一栏的标题
        $key       = ord("A"); // 设置表头
        foreach ($header as $v) {
            $colum = chr($key);
            $objSheet->setCellValue($colum . '1', $v);
            $key += 1;
        }       
        //设置数据
        $headkeys = array_keys($header);
        $column = 2;
        foreach ($data as $key => $rows) {// 行写入
            $span = ord("A");
            foreach ($headkeys as $k => $v) { // 列写入
                $value = isset($rows[$v]) ? $rows[$v] : '';
                if (strlen($value) > 9) {
                    $value .= ' ';
                }
                $objSheet->setCellValue(chr($span) . $column, $value);
                $span++;
            }
            $column++;
        }
                        
        ob_end_clean() ;        
        if ($format == 'Xlsx') {
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        } elseif ($format == 'Xls') {
            header('Content-Type: application/vnd.ms-excel');
        }
        header('Content-Type: application/vnd.ms-excel');
        header("Content-Disposition: attachment;filename=". $filename . time() . '.' . strtolower($format));
        header('Cache-Control: max-age=0');
        
        $objWriter = IOFactory::createWriter($newExcel, $format);
        $objWriter->save('php://output');
        exit();
    }

2、调用

$data = [
            [
                'number' => '001',
                'type' => '类型1',
                'title' => '标题1',
            ],
            [
                'number' => '002',
                'type' => '类型2',
                'title' => '标题2',
            ],
        ];
        $header = [
            'number' => '编号',
            'type' => '类型',
            'title' => 标题'
        ];
        $filename = 'xxxx';
        $this->excelExport($filename, $header,  $data);

 3、参考网站https://blog.csdn.net/withoutfear/article/details/127900108

 

posted @ 2025-04-11 15:58  pengcx  阅读(17)  评论(0)    收藏  举报