PHP超大数据EXCEL生成方法

有个需求,用PHP生成EXCEL,数据量有30万行。用SpreadSheet肯定是不行了。

最后用的PHP的扩展,xlswriter。

官方网址

https://xlswriter-docs.viest.me/zh-cn/an-zhuang/pecl-tui-jian

首先安装扩展

pecl install xlswriter

# 添加 extension = xlswriter.so 到 ini 配置

如果pecl安装不成功,可以选用源码安装。可以去官网查阅,这里不必再表。

然后PHP中调运的代码如下:

$config = [
    'path' => $this->filePath // xlsx文件保存路径
];
$excel  = new \Vtiful\Kernel\Excel($config);

注意,由于数据量有30万之多,所以我每次都是读取1万行来保存,防止每次读取的数据过多导致内存不足,代码如下

if($offset ==0){
    //第一次新建文件
    $filePath = $excel->fileName($tableName . '.xlsx', 'Sheet1')
        ->header($title)
        ->data($excelData)
        ->output();
}else{
    //之后只需要往直前的文件追加即可
    $excel->openFile($tableName . '.xlsx')
        ->openSheet('Sheet1')->setSkipRows($offset)->data($excelData)
        ->output();
}
$offset += $limit;

经过测试,30万行数据保存完只需要10秒左右,速度很快。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值