基于 phpspreadsheet ,转换 xls 文件为 PHP 数组

  • A+
所属分类:脚本开发
摘要

大的 xls 文件,在服务器操作,一般小的 VPS 难抗住,因此一般会在强大的机器上转为数组文件,再做下一步的数据处理,会省很多内存, xls 文件的转换确实很非内存,不信你可以试试。

大的 xls 文件,在服务器操作,一般小的 VPS 难抗住,因此一般会在强大的机器上转为数组文件,再做下一步的数据处理,会省很多内存, xls 文件的转换确实很非内存,不信你可以试试。

现在就基于  phpspreadsheet  进行,据说还有更省资源的 package ,这里我试了,能满足我的需求,就先不折腾了。

首先安装

composer require phpoffice/phpspreadsheet

 

然后就导入

use PhpOffice\PhpSpreadsheet\IOFactory;

 

嗯,我简单粗暴的转换,全部转换,简单省事:

private function ExceltoArray($path,$outfile)
{
    $starttime = microtime("true");
    $inputFileType = 'Xls';
    $outFilename = $outfile;
    $reader = IOFactory::createReader($inputFileType);
    $reader->setReadDataOnly(true);
    $spreadsheet = $reader->load($path);
    $ActiveSheet=$spreadsheet->getActiveSheet();
    $sheetData = $ActiveSheet->toArray(null, true, true, false);
    array_shift($sheetData);
    if(file_exists($outFilename)) unlink($outFilename);
    $writeContent = "<?php return " . var_export($sheetData,true) . ";";
    $fileSize = file_put_contents($outFilename,$writeContent);
    $fileSize =  $fileSize ? $fileSize : 0;
    unlink($path);
    return ['filesize'=>round($fileSize/1024/1024,2),'time'=>round(microtime("true") - $starttime,2)];
}

 

 

 

  • 免费优惠券
  • 免费领取优惠券
  • weinxin
  • 支付宝红包领取
  • 支付宝大额红包
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

关闭震动