联想到场景:要导入数据,可能excel数据量很大,这里利用常用的一些方法比如phpexcel会常有时间和内存限制问题
下面我们就利用一个利用流处理的类库SpreadsheetReader来做大excel的读取
编写过程说明关键具体在代码里注释代码?php * Created by PhpStorm. * User: qkl * Date: 2018/7/11 * Time: 15:14set_time_limit(0); // 设置脚本最大执行时间 为0 永不过期//ini_set( memory_limit , 200M // 临时设置最大内存占用function convert($size) $unit = array( b , kb , mb , gb , tb , pb return @round($size / pow(1024, ($i = floor(log($size, 1024)))), 2) . . $unit[$i];require ../vendor/autoload.php $start = memory_get_usage();echo convert($start) . PHP_EOL;//$inputFileName = ./11111111.xlsx $inputFileName = ./example1.xlsx // If you need to parse XLS files, include php-excel-reader$startTime = microtime(true);$Reader = new SpreadsheetReader($inputFileName);//获取当前文件所有的工作表$sheets = $Reader- Sheets();if (!$sheets) { die( 没有工作表 //改变当前处理的工作表$Reader- ChangeSheet(0);//打印当前所在工作表的当前所在行数据var_dump($Reader- html' target='_blank'>current());//因为reader类集成了Iter所以可以用迭代方式处理//这里提醒 如果文件超大,这边的处理速度会过慢,不过不会引发内存性能问题//$i = 0;//foreach ($Reader as $Row)// if ($i =3) {// break;// echo $i . PHP_EOL;// print_r($Row);// $i++;$endTime = microtime(true);$memoryUse = memory_get_usage();echo 内存占用: . convert($memoryUse) . 用时: . ($endTime - $startTime) . PHP_EOL;结果测试说明上面读取的example1.xlsx文件有100M左右,读写过慢,测试只开了读取当前默认工作表的当前所在行数据
147.77 kbarray (size=50) 0 = string xxxxxxxxxxxxxx (length=25) 1 = string xxxxxxxxxxxxxx (length=15) 2 = string xxxxxxxxxxxxxx (length=18) 3 = string xxxxxxxxxxxxxx (length=12) 4 = string xxxxxxxxxxxxxx (length=12) 5 = string xxxxxxxxxxxxxx (length=12) 6 = string xxxxxxxxxxxxxx (length=24) 7 = string xxxxxxxxxxxxxx (length=12) 8 = string xxxxxxxxxxxxxx (length=27) 9 = string xxxxxxxxxxxxxx (length=12) 10 = string xxxxxxxxxxxxxx (length=15) 11 = string xxxxxxxxxxxxxx (length=28) 12 = string xxxxxxxxxxxxxx (length=9) 13 = string xxxxxxxxxxxxxx (length=12) 14 = string xxxxxxxxxxxxxx (length=9) 15 = string xxxxxxxxxxxxxx (length=6) 16 = string xxxxxxxxxxxxxx (length=9) 17 = string xxxxxxxxxxxxxx (length=3) 18 = string xxxxxxxxxxxxxx (length=6) 19 = string xxxxxxxxxxxxxx (length=3) 20 = string xxxxxxxxxxxxxx (length=15) 21 = string xxxxxxxxxxxxxx (length=15) 22 = string xxxxxxxxxxxxxx (length=19) 23 = string xxxxxxxxxxxxxx (length=13) 24 = string xxxxxxxxxxxxxx (length=19) 25 = string xxxxxxxxxxxxxx (length=12) 26 = string xxxxxxxxxxxxxx (length=12) 27 = string xxxxxxxxxxxxxx (length=12) 28 = string xxxxxxxxxxxxxx (length=6) 29 = string xxxxxxxxxxxxxx (length=12) 30 = string xxxxxxxxxxxxxx (length=6) 31 = string xxxxxxxxxxxxxx (length=15) 32 = string xxxxxxxxxxxxxx (length=24) 33 = string xxxxxxxxxxxxxx (length=18) 34 = string xxxxxxxxxxxxxx (length=18) 35 = string xxxxxxxxxxxxxx (length=24) 36 = string xxxxxxxxxxxxxx (length=12) 37 = string xxxxxxxxxxxxxx (length=18) 38 = string xxxxxxxxxxxxxx (length=21) 39 = string xxxxxxxxxxxxxx (length=9) 40 = string xxxxxxxxxxxxxx (length=9) 41 = string xxxxxxxxxxxxxx (length=18) 42 = string xxxxxxxxxxxxxx (length=21) 43 = string xxxxxxxxxxxxxx (length=15) 44 = string xxxxxxxxxxxxxx (length=12) 45 = string xxxxxxxxxxxxxx (length=6) 46 = string xxxxxxxxxxxxxx (length=12) 47 = string xxxxxxxxxxxxxx (length=22) 48 = string xxxxxxxxxxxxxx (length=22) 49 = string (length=0)内存占用:207.55 kb; 用时:9.5835480690002
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP !
相关推荐:
如何使用PHP来写一个简单的解释器
如何使用MixPHP来开发API接口
以上就是PHP如何读取大excel文件数据的方法的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答