thinkphp可快速搭建轻量办公工具:①批量生成带缓存与xss防护的标准化文案;②支持phpspreadsheet导出带样式excel或原生csv导出;③按年月日自动归类上传文件至对应目录。

用ThinkPHP搭建轻量级办公工具,快速生成文案模板、导出结构化Excel表格、自动归类上传的文件,省去重复手动操作。
用ThinkPHP批量生成标准化文案
适用于会议纪要、周报、通知类文本的固定格式填充,避免每次打开Word重写标题和落款。
第一步:在app/controller/Office.php中定义generateReport()方法,接收date、author、content三个参数。
第二步:使用view()->fetch()加载report.tpl模板,该模板位于view/office/目录下,内含{\$date}、{\$author}等占位符。
第三步:调用think\facade\Cache::set()缓存生成结果,键名为'report_' . md5(\$date.\$author),有效期2小时——防止同一参数反复渲染消耗CPU。
注意:模板中禁止直接写<?php echo \$content; ?>,必须用{\$content|htmlspecialchars}过滤,否则XSS风险极高。
ThinkPHP一键导出带样式的Excel表格
方法一:用phpspreadsheet扩展(推荐)
执行composer require phpoffice/phpspreadsheet安装扩展。
在控制器中引入\PhpOffice\PhpSpreadsheet\Spreadsheet和\PhpOffice\PhpSpreadsheet\Writer\Xlsx。
创建新实例→设置默认字体为“微软雅黑”→在A1单元格写入标题并加粗居中→用setCellValueByColumnAndRow()按列写入数据数组→最后调用save()输出到public/download/并返回下载链接。
方法二:用ThinkPHP原生excelExport()辅助函数(仅支持纯数据无样式)
直接传入二维数组,如[['姓名','部门','入职时间'],['张三','技术部','2025-03-12']],函数自动拼接CSV内容并设响应头Content-Type: text/csv。
【关键前提】导出路径public/download/必须已存在且Web服务器有写权限,否则save()会静默失败不报错。
自动整理上传的办公文件到对应日期文件夹
用户通过表单上传合同、扫描件、发票等文件,系统按年月日创建子目录存放,避免所有文件堆在根目录。
① 获取上传文件对象:$file = \$this->request->file('upload');
② 验证类型与大小:if (!\$file->checkExt(['pdf','jpg','png','docx']) || \$file->getSize() > 10 * 1024 * 1024) { return json(['error' => '仅支持PDF/JPG/PNG/DOCX,且不超过10MB']); }
③ 构建目标路径:$year = date('Y'); $month = date('m'); $day = date('d'); $savePath = "uploads/\$year/\$month/\$day/";
④ 创建目录并移动:mkdir(ROOT_PATH . 'public/' . \$savePath, 0755, true); \$file->move(ROOT_PATH . 'public/' . \$savePath);
这一步操作起来很简单,直接把文件拖进去就行。但务必确认ROOT_PATH . 'public/uploads'父目录已存在且可写,否则mkdir的第三个参数true虽能递归建目录,但若父目录权限拒绝,整个流程会中断并抛出Warning。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











