-
由于PHPExcel早就停止更新维护,建议使用phpspreadsheet,本文就教你如何用PhpSpreadsheet导出excel
注:原生导出excel可以看我另一篇文章https://blog.csdn.net/qq_36303853/article/details/100283687 -
环境要求:
PHP >= 5.6 开启php_zip扩展 开启php_xml扩展 开启php_gd2扩展 -
使用composer安装,依次输入下面2条指令
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ composer require phpoffice/phpspreadsheet -vvv -
安装成功

使用
-
先引入命名空间
use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; -
封装方法
/** * 导出excel表 * $data:要导出excel表的数据,接受一个二维数组 * $name:excel表的表名 * $head:excel表的表头,一维数组 * $key:$data中对应表头的键的数组,一维数组 * 备注:表头(对应列数)不能超过26; */ public function excel($name='表'名, $data=[], $head=[], $keys=[]) { $count = count($head); //计算表头数量 $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); for ($i = 65; $i < $count + 65; $i++) { //数字转字母从65开始,循环设置表头: $sheet->setCellValue(strtoupper(chr($i)) . '1', $head[$i - 65]); } foreach ($data as $key => $item) { //循环设置单元格: //$key+2,因为第一行是表头,所以写到表格时 从第二行开始写 for ($i = 65; $i < $count + 65; $i++) { //数字转字母从65开始: $sheet->setCellValue(strtoupper(chr($i)) . ($key + 2), $item[$keys[$i - 65]]); $spreadsheet->getActiveSheet()->getColumnDimension(strtoupper(chr($i)))->setWidth(20); //固定列宽 } } header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="' . $name . '.xlsx"'); header('Cache-Control: max-age=0'); $writer = new Xlsx($spreadsheet); $writer->save('php://output'); //删除清空: $spreadsheet->disconnectWorksheets(); unset($spreadsheet); exit; } -
简单的使用
//数据 $data = Db::name('user')->select()->toArray(); //设置表头: $head = ['ID','项目名称', '姓名']; //数据中对应的字段,用于读取相应数据: $keys = ['id','project_name', 'user_nickname']; $this->excel('报名信息表', $data, $head, $keys);
y
如果你也学php可以点个关注,我会不定期更新文章,给个赞,支持一下,过程有遇到什么问题也欢迎评论私信,进行交流
来源:CSDN
作者:qq_36303853
链接:https://blog.csdn.net/qq_36303853/article/details/104646893
