tp5.1导出数据到excel

1、安装 phpoffice/phpexcel 库

2、读取需要的字段信息 并定义相应的单元格名称 将内容 写入Excel数据表信息

public function down()
{
    // 读取数据表信息
    $db      = new UserModel();
    $list    = $db->field('id,name,email,phone,age,create_time')->select();
    $xlsName = "用户表"; // 表名称
    $xlsCell = [
        ['id', '序号'],
        ['name', '名称'],
        ['email', '邮箱'],
        ['phone', '电话'],
        ['age', '年龄'],
        ['create_time', '添加时间']
    ];// 表头信息
    $this->downloadExcel($xlsName, $xlsCell, $list);// 传递参数
}

protected function downloadExcel($expTitle, $expCellName, $expTableData)
{
    $xlsTitle    = iconv('utf-8', 'gb2312', $expTitle);//文件名称
    $fileName    = $expTitle;
    $cellNum     = count($expCellName);// 单元格长度
    $dataNum     = count($expTableData);
    $objPHPExcel = new \PHPExcel();// 引入库
    $cellName = [
        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 
        'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
    ];
    $objPHPExcel->getActiveSheet(0)
        ->mergeCells('A1:' . $cellName[$cellNum - 1] . '1');//合并单元格为表头
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle);// 设置表头单元格
    for ($i = 0; $i < $cellNum; $i++) {
        $objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue($cellName[$i] . '2', $expCellName[$i][1]);

// 设置列
    }
    // Miscellaneous glyphs, UTF-8  循环写入数据
    for ($i = 0; $i < $dataNum; $i++) {
        for ($j = 0; $j < $cellNum; $j++) {
            $objPHPExcel->getActiveSheet(0)
        ->setCellValue($cellName[$j] . ($i + 3), $expTableData[$i][$expCellName[$j][0]]);
        }
    }
    ob_end_clean();//这一步非常关键,用来清除缓冲区防止导出的excel乱码
    header('pragma:public');
    header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.xls"');
    header("Content-Disposition:attachment;filename=$fileName.xls");//"xls"参考下一条备注
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
//"Excel2007"生成2007版本的xlsx,"Excel5"生成2003版本的xls 调用工厂类
    return $objWriter->save('php://output');
}

3、页面直接访问down方法即可

1 2

© 版权声明
THE END
喜欢就支持一下吧
点赞15赞赏
分享
评论 抢沙发
孙先森资源的头像孙先森资源|专注优质网络资源教程分享孙先森资源教程

昵称

取消
昵称表情代码图片