个人总结的php excel导入功能

贴出主要代码:

/**
 * @Author: 小枫哥
 * @Date: 2018-12-21 10:40:10
 * @Param: $HighestColumn |列数; $HighestRow |行数; $sheettmp |当前活动sheet对象
 * @Last Modified time: 2018-12-21 12:41:09
 * @notice:此方法只适用于phpexcel搭配使用
 */
    static  function importExcel($tmp_file,$name,$size){
        include_once ROOT_PATH.\'phpexcel/PHPExcel.php\';
        // 判断Excel文件版本类型
        $excelType = PHPExcel_IOFactory::identify( $tmp_file );
        if ($excelType == \'Excel5\'){
            include_once ROOT_PATH.\'PHPexcel/PHPExcel/Reader/Excel5.php\';
            include_once ROOT_PATH.\'phpexcel/PHPExcel/Writer/Excel5.php\';
        }else if ($excelType == \'Excel2007\')
        {
            include_once ROOT_PATH.\'PHPexcel/PHPExcel/Reader/Excel2007.php\';
            include_once ROOT_PATH.\'phpexcel/PHPExcel/Writer/Excel2007.php\';
        }
        // 设置PHPExcel缓存机制
        $cacheMethod = PHPExcel_Cached StorageFactory::cache_to_wincache;
        $cacheSettings = array( \'cacheTime\'  => 600 );
        PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
        //创建一个excel对象和一个reader
        $objPHPExcel = new PHPExcel();
        $objReader = PHPExcel_IOFactory::createReader ( $excelType );
        //读取Excel模板
        $objPHPExcel = $objReader->load ( $tmp_file );
        $objPHPExcel->setActiveSheetIndex(0);
        $sheettmp = $objPHPExcel->getActiveSheet();
        $HighestRow  = $sheettmp->getHighestColumn(); // 取得总列数
        $HighestColumn = $sheettmp->getHighestRow();    // 取得行数
            //excel的数据组装成数组
            $excelArr=self::excel_toArr($start,$HighestColumn,$HighestRow, $sheettmp);
           
        }

    static function excel_toArr($start,$HighestColumn,$HighestRow, $sheettmp){
        $Detail = array();
        $excellie = array();
        $excelArr = array();
        $index = 0;
        //注意excel中Z之后就是AA,AB,AC,此方法适用与一般的导入
        $character = array(\'A\',\'B\',\'C\',\'D\',\'E\',\'F\',\'G\',\'H\',\'I\',\'J\',\'K\',\'L\',\'M\',\'N\',\'O\',\'P\',\'Q\',\'R\',\'S\',\'T\',\'U\',\'V\',\'W\',\'X\',\'Y\',\'Z\');
        for ($i=0; $i < 26; $i++) { 
           if($i < $HighestRow ){
                $excellie[] = $character[$i];
           }else{
                break;
           }
        }
        for ($i = $start; $i < $HighestColumn; $f++){ 
            for($k=0;$k<count($excellie); $k++){
                $cell = $sheettmp->getCell($excellie[$k].$i)->getCalculatedValue();
                if($cell instanceof PHPExcel_RichText){ //富文本转换字符串
                    $cell = $cell->__toString();
                }
              $Detail[] = $cell;
            }
            $excelArr[$index] = $Detail;
            $index++;     
        }
        return $excelArr;

    }

 

收藏 打印