老样子 今天的封面来自下面的摄影师 感谢下~

图片来源

昨天提了Excel的时间戳问题 分享一个Excel里修改时间戳为指定格式的函数公式 今天顺着介绍下PHP这边导出Excel表格的库 用这个可以直接把后台数据库里的数据 按照规定好的格式 导出为Ecxel表格 库的名称是 PhpSpreadsheet 官方文档是下面的链接

https://phpspreadsheet.readthedocs.io/en/latest/#installation

后台安装的话用composer就可以

composer require phpoffice/phpspreadsheet

安装完成之后 新建一个业务类 引入以下库文件

use PhpOffice\PhpSpreadsheet\Spreadsheet;use PhpOffice\PhpSpreadsheet\IOFactory;

之后按照自己的需求 先做标题行

$spreadsheet = new Spreadsheet();$activeWorksheet = $spreadsheet->getActiveSheet();$activeWorksheet->setCellValue('A1', '序号');$activeWorksheet->setCellValue('B1', '订单时间');$activeWorksheet->setCellValue('C1', '订单号');$activeWorksheet->setCellValue('D1', '配送地址');$activeWorksheet->setCellValue('E1', '订单数量');$activeWorksheet->setCellValue('F1', '客户电话');$activeWorksheet->setCellValue('G1', '客户备注');$activeWorksheet->setCellValue('H1', '其他项目A');$activeWorksheet->setCellValue('I1', '其他项目B');$activeWorksheet->setCellValue('J1', '其他项目C');$activeWorksheet->setCellValue('K1', '其他项目D');

数据填入的话 用了foreach循环 key值是Excel表格的数据列 得计算一下

foreach ($obj as $k => $v) { $activeWorksheet->setCellValue('A'.($k+2), ($k+1)); $activeWorksheet->setCellValue('B'.($k+2), $v['a']); $activeWorksheet->setCellValue('C'.($k+2), $v['b']); $activeWorksheet->setCellValue('D'.($k+2), $v['c']); $activeWorksheet->setCellValue('E'.($k+2), $v['d']); $activeWorksheet->setCellValue('F'.($k+2), $v['e']); $activeWorksheet->setCellValue('G'.($k+2), $v['f']); $activeWorksheet->setCellValue('H'.($k+2), $v['g']); $activeWorksheet->setCellValue('I'.($k+2), $v['h']); $activeWorksheet->setCellValue('J'.($k+2), $v['i']); $activeWorksheet->setCellValue('K'.($k+2), $goodTitle); }

最后的代码是下面这个 循环结束之后 就可以保存出来一份xlsx了

$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');$writer->save('test.xlsx');

用这个库直接导出的数据 时间戳可以转为年月日时分秒的正常格式 其他数据的格式 都可以在转换期间 处理好之后再填入到数据表格里 整个过程 稍微有点麻烦的是数据和单元格一一对应的情况 嗯 可能我自己用起来新手一点 多测试了几次才得到想要的数据表格式 不过只要调整好下次就可以直接用了 有需要的可以自己安装了试一试

保持好奇 不断进步 下期见~