企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### 1 安装 phpoffice/phpexcel 库 ``` composer require phpoffice/phpexcel ``` ### 2 用户表sql文件大致如下 ``` CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT NULL, `password` varchar(32) NOT NULL, `email` varchar(32) NOT NULL, `phone` varchar(32) NOT NULL, `age` tinyint(3) NOT NULL, `create_time` int(11) NOT NULL, `update_time` int(11) NOT NULL, `status` tinyint(1) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; ``` ### 3 读取需要的字段信息 并定义相应的单元格名称 将内容 写入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'); } ``` ### 4 页面直接访问down方法即可