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;
        }
    }
    
    
    
    
    
  • 相关阅读:
    Android 中的通知
    Android 画图之Matrix(二)
    Android 画图之 Matrix(一)
    Android 实现书籍翻页效果(转载链接)
    Android 基于TranslateAnimation 的动画动态菜单(非系统menu菜单)
    Activity 页面切换的效果
    Android 访问本地API doc较慢
    Eclipse插件工具
    Android 性能优化的一些方法
    Android JAVA代码执行shell命令
  • 原文地址:https://www.cnblogs.com/cl94/p/13962892.html
Copyright © 2011-2022 走看看