zoukankan      html  css  js  c++  java
  • PHPExcel 两种方式实现xls文件转数组的性能差异

    ·文件为5000行3列的xls文件。php版本为5.6

    <?php
    
    namespace appcommonlogic;
    
    use Exception;
    
    class Xls{
        // 获取当前13位(毫秒级)时间戳
        private static function getMs(){
            list($msec, $sec) = explode(' ', microtime());
            $msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
            return $msectime;
        }
        // 实现xls/xlsx文件转数组
        public static function excel2data($path){
            $time = self::getMs();
            // 这种方式约耗时1270毫秒
            // include_once EXTEND_PATH . 'PHPExcel.php';
            // $fileType = explode('.', $path)[count(explode('.', $path)) - 1];
            // if ($fileType == 'xlsx') {
            //     $phpReader = new PHPExcel_Reader_Excel2007();
            // } else if ($fileType == 'xls') {
            //     $phpReader = new PHPExcel_Reader_Excel5();
            // }
            // if(!$phpReader->canRead($path)){
            //     throw Exception("文件路径错误");
            // }
            // $phpExcel = $phpReader->load($path);
            // $excelArray = $phpExcel->getActiveSheet()->toArray();   //转换为数组格式
            // array_shift($excelArray);  //删除第一个数组(标题);
           
    
           
            // 这种方式耗时约580毫秒
            include_once EXTEND_PATH . 'PHPExcelIOFactory.php';
            $fileType = explode('.', $path)[count(explode('.', $path)) - 1];
            if ($fileType == 'xlsx') {
               $phpReader = "Excel2007";
            } else if ($fileType == 'xls') {
                $phpReader = "Excel5";
            }
            // 只读去数据,忽略里面各种格式等(对于Excel读去,有很大优化)
            $objReader = PHPExcel_IOFactory::createReader($phpReader);
            $objReader->setReadDataOnly(true);
            if(!$objReader->canRead($path)){
                throw Exception("文件路径错误");
            }
            $phpExcel = $objReader->load($path);
            $excelArray = $phpExcel->getActiveSheet()->toArray();   //转换为数组格式
            array_shift($excelArray);  //删除第一个数组(标题);
            return self::getMs() - $time;
        }
    }
    
    
    
    
    
  • 相关阅读:
    钉钉服务器端SDK PHP版
    戒不掉
    亲历钓鱼网站
    我整理的PHP 7.0主要新特性
    JavaScript中JSON的处理心得
    X3D中Profile如何翻译
    你可以写什么?
    Gitblit中采用Ticket模式进行协作开发
    理解JavaScript中的事件处理 阻止冒泡event.stopPropagation();
    测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
  • 原文地址:https://www.cnblogs.com/cl94/p/13962892.html
Copyright © 2011-2022 走看看