当前位置: 首页 > 工具软件 > XLSWriter > 使用案例 >

TP6下xlswriter - excel导出

皮自明
2023-12-01

使用xlswriter来实现excel导出

今天用了基于tp6的catchadmin框架去实现了excel的导出,发现有些数据可以导出来,有些出现了Invalid cell coordinate [2的报错问题,后面查阅了资料发现是因为phpexcel有个bug,因为excel的列是对应26个字母的,当你导出的字段超过26个时,会不能识别AA1,AB1…这样的列表AA1就会变成字符 [ ,因此就有个Invalid cell coordinate [2这个错误;解决办法就是需要就改phpexcel的底层代码了,要么就还别的方式去实现,这里因为项目中的第三方插件都是通过composer来安装管理的,若改了底层代码下次做composer安装和更新底层代码肯定会丢失,因此只能找别的方式去实现了。
然后同事推荐了php-xlswriter,自己也根据本地的windows10(64位) + php7.2nts的环境安装了这个在gitee中下载的 php_xlswriter.dll扩展,下载的时候需要注意,刚开始因为我的环境是64位的,找的也是php7.2nts+x64的扩展,但是一直跑不起来,提示not found这个类,花很多时间去找原因,直到最后没啥子想法了才去一个一个扩展下载下来去安装引入才测试出来php7.2nts+X86的才好使,最后测试近5W的数据导出excel只需2-3S即可完成
在windows下php - xlswriter扩展的安装超级简单,只需要下载环境对应的php-xlswriter.dll放到对应php版本下的ext目录下,然后再php.ini中extension=php_xlswriter.dll引入即可,然后根据文档(https://xlswriter-docs.viest.me/zh-cn)去实现你要的功能就可以了,无需composer安装和导入某些文件类,下面是展示实现excel导出的关于xlswrite的所有代码:

 $config = ['path' => $path];
    $excel  = new \Vtiful\Kernel\Excel($config);
    $fileName = 'title' . '_' . date('YmdHis', time()) . '.xlsx';
    $fileObject = $excel->constMemory($fileName);
    $fileHandle = $fileObject->getHandle();

    $format = new \Vtiful\Kernel\Format($fileHandle);
    $colorOneStyle = $format
        ->bold()
        ->align(\Vtiful\Kernel\Format::FORMAT_ALIGN_CENTER, \Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_CENTER)
        ->toResource();

    $format = new \Vtiful\Kernel\Format($fileHandle);
    $colorTwoStyle = $format
        ->fontColor(\Vtiful\Kernel\Format::COLOR_GREEN)
        ->toResource();
        
    $fileObject
        ->defaultFormat($colorOneStyle) // 写入数据前设置行样式
        ->header($titles) //titles标题
        ->defaultFormat($colorTwoStyle)
        ->data($data) //data需要导出的数据,格式按文档组装即可
        ->output();
        
   if ($fileObject) {
        return 'http://'.$_SERVER['HTTP_HOST'].$path;
    }
    return false;
 类似资料: