您当前的位置:首页 > 建站知识 > 编程知识

ThinkPHP6导出Excel

发布时间: 2021-03-14 │ 浏览:400 

从tp5升级到tp6后,原来导出excel的代码用不了,把PHPExcel复制到extend目录里也无效。
没办法,只能按tp6的规则:
1、输入命令:composer require phpoffice/phpexcel 安装PHPExcel

2、控制器头不用use PHPExcel

3、导出代码
public function expExcel() {
    //要输出的数据
    $data = array( [ 'id' => 'x1', 'name' => '熊大'], [ 'id' => 'x2', 'name' => '熊二'] );
    //实例化PHPExcel类
    $objPHPExcel = new \PHPExcel();
    //激活当前的sheet表
    $objPHPExcel->setActiveSheetIndex(0);
    //设置表格头(即excel表格的第一行)
    $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'ID') ->setCellValue('B1', '姓名') ;
    //循环刚取出来的数组,将数据逐一添加到excel表格。
    for ($i = 0; $i < count($data); $i++) {
        $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $data[$i]['id']);//ID

        $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $data[$i]['name']);//姓名

    }
    //设置保存的Excel表格名称
    $filename = 'test.xls';
    //设置浏览器窗口下载表格
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");
    header('Content-Disposition:inline;filename="' . $filename . '"');
    //生成excel文件
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    //下载文件在浏览器窗口
    $objWriter->save('php://output');
    exit;
}


4、运行上面的代码会出错:

这时,找到vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/OLE.php文件,来到288行,把continue改为break