天天看点

thinkphp5 PhpSpreadsheet 的 excel数据导出

先贴代码

public function excel_table_info(){
        $res = $this->_excel->excel_table_info();    //需导出的数据

        if($res){
            $spreadsheet = new  Spreadsheet();       //new一个对象(适合单身的我。。。)

            //说明以下内容只是excel第一个sheet页的属性设置
            $builder = $spreadsheet->setActiveSheetIndex(0);
            //定义标签栏,
            $builder->setCellValue('A1', '表名');
            $builder->setCellValue('B1', '资源名称');
            $builder->setCellValue('C1', '来源部门');
            $builder->setCellValue('E1', '主题域');
            $builder->setCellValue('F1', '子域');
            //建议在数据表或者公共函数中定义标签栏编号和名称,foreach循环定义
//            foreach ($data as $v) {
//                $builder->setCellValue($v['key'], $v['name']);
//            }

            //设置A栏数据内容宽度自适应(这个有问题,我同时设置多栏时,不好使)
            $builder->getColumnDimension( 'A')->setAutoSize(true);   

            $spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(130);    //设置宽度
            //excel的具体数据,第一行为标题,数据从第二行开始
            foreach ($res as $key=>$val) {
                $key = $key + 2;
                    $spreadsheet->getActiveSheet()
                    ->setCellValue('A'.$key, $val['table_name'])
                    ->setCellValue('B'.$key, $val['zymc'])
                    ->setCellValue('C'.$key, $val['lybm'])
                    ->setCellValue('D'.$key, $val['zty'])
                    ->setCellValue('E'.$key, $val['zy']);
//                    ->setCellValue('E'.$key, 1);      //设置默认值
            }
            //定义sheet页名称
            $spreadsheet->getActiveSheet()->setTitle('sheet页名称');
            //定义导出的excel文件名
            $filename = '公安数据.xlsx';
            //当导出的excel有多个sheet页,默认显示第一页
            $spreadsheet->setActiveSheetIndex(0);

            //后面的是默认的内容,能不能改,怎么改 还不清楚
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment;filename="'.$filename.'"');
            header('Cache-Control: max-age=0');

            $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
            //下载文档
            $writer->save('php://output');
        }
    }
           

先这样,后面了解更多,再来新修改!求大佬指教!!!

继续阅读