php-xlswriter实现数据导出excel单元格合并,内容从指定行开始写

最终效果图:

代码:

php 复制代码
public function export_data() {
        $list = $this->get_list_organ();
        $content = [];
        $content[] = []; // 第2行不设置内容,设置为空
        foreach ($list as $key => $value) {
            $content[] = [$value['organ_name'], $value['class_name'], $value['num1'], $value['num2'], $value['num3'], $value['money2'], $value['money3']];
        }
        // 文件存储目录
        $path = $_SERVER['DOCUMENT_ROOT'] . '/statistics/';
        $fileName = 'data_'.date('YmdHis').'.xlsx';
        if(!file_exists($path)){
            mkdir($path, 0777);
        }
        $excel_config = [
            'path' => $path // xlsx文件保存路径
        ];
        $excel  = new \Vtiful\Kernel\Excel($excel_config);
        $fileObject = $excel->fileName($fileName, 'sheet1');

         // // 设置样式
         $fileHandle = $fileObject->getHandle();
         $format = new \Vtiful\Kernel\Format($fileHandle);
         $alignStyle = $format
                         ->align(\Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_CENTER, \Vtiful\Kernel\Format::FORMAT_ALIGN_CENTER_ACROSS)
                         ->toResource();
         $boldStyle = $format
             ->bold() // 加粗
             // ->wrap() // 文本换行
             // ->background(0xFFB6C1) // 设置背景颜色 颜色常量和16进制数
             ->align(\Vtiful\Kernel\Format::FORMAT_ALIGN_CENTER, \Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_CENTER) // 文本居中
             ->toResource();
         // fileName 会自动创建一个工作表,你可以自定义该工作表名称,工作表名称为可选参数
         $fileObject
         ->header(['救助机构', '救助项目', '受理数量(次)', '完成救助数量(次)', '完成救助金额(元)'])
         ->mergeCells('A1:A2', '救助机构', $boldStyle)
         ->mergeCells('B1:B2', '救助项目', $boldStyle)
         ->mergeCells('C1:C2', '受理数量(次)', $boldStyle)
         ->mergeCells('D1:E1', '完成救助数量(次)', $boldStyle)
         ->mergeCells('D2:D2', '小计', $boldStyle)
         ->mergeCells('E2:E2', '其中异地户籍救助', $boldStyle)
         ->mergeCells('F1:G1', '完成救助金额(元)', $boldStyle)
         ->mergeCells('F2:F2', '小计', $boldStyle)
         ->mergeCells('G2:G2', '其中异地户籍救助金额', $boldStyle)
        //  ->defaultFormat($alignStyle)
         ->setRow('A1', 30)
         ->setRow('D2:D9999', 20) // 行宽
         ->setColumn('A:G', '20')
         ->data($content)
         ->output(); // 列宽

         $file_dir = '/statistics/'.$fileName;
         return $file_dir;
    }
相关推荐
游戏开发爱好者842 分钟前
BShare HTTPS 集成与排查实战,从 SDK 接入到 iOS 真机调试(bshare https、签名、回调、抓包)
android·ios·小程序·https·uni-app·iphone·webview
2501_916008891 小时前
iOS 26 系统流畅度实战指南|流畅体验检测|滑动顺畅对比
android·macos·ios·小程序·uni-app·cocoa·iphone
BingoGo1 小时前
PHP 开发者应该理解的 Linux 入门权限指南
后端·php
苏琢玉2 小时前
再也不用翻一堆日志!一键部署轻量级错误监控系统,帮你统一管理 PHP 报错
go·github·php
2501_915106323 小时前
苹果软件加固与 iOS App 混淆完整指南,IPA 文件加密、无源码混淆与代码保护实战
android·ios·小程序·https·uni-app·iphone·webview
2501_915921433 小时前
iOS 26 崩溃日志解析,新版系统下崩溃获取与诊断策略
android·ios·小程序·uni-app·cocoa·iphone·策略模式
JaguarJack4 小时前
PHP 开发者应该理解的 Linux 入门权限指南
后端·php
2301_793167994 小时前
网络管理部分
linux·运维·服务器·网络·php
齊家治國平天下5 小时前
Android 14 Input 事件派发机制深度剖析
android·input·hal
2501_916013746 小时前
iOS 推送开发完整指南,APNs 配置、证书申请、远程推送实现与上架调试经验分享
android·ios·小程序·https·uni-app·iphone·webview