PHPExcel读取表格内容,支持三种表格格式,同时对时间和对象都进行了处理

/**
 * 读取指定Excel文件里的数据
 * @param  [string] $file [Excel文件地址]
 * @return [array]  $data [返回的数组数据]
 */
function import_excel($file){
    // 判断文件是什么格式
    $type = pathinfo($file); 
    $type = strtolower($type["extension"]);
    //$type=$type==='csv' ? $type : 'Excel5';
    ini_set('max_execution_time', '0');
    Vendor('PHPExcel.PHPExcel');
    Vendor('PHPExcel.PHPExcel.IOFactory');

    Vendor("PHPExcel.PHPExcel.Shared.Date");
    $shared = new \PHPExcel_Shared_Date();

    // 判断使用哪种格式
    if($type=='xls'){  
        $objReader = PHPExcel_IOFactory::createReader('Excel5');  
    }elseif($type=='xlsx'){  
        $objReader = PHPExcel_IOFactory::createReader('Excel2007');  
    }elseif($type=='csv'){  
        $objReader = PHPExcel_IOFactory::createReader('CSV');  
    }
    //$objReader = PHPExcel_IOFactory::createReader($type);
    $objPHPExcel = $objReader->load($file); 
    
    $sheet = $objPHPExcel->getSheet(0); 
    // 取得总行数 
    $highestRow = $sheet->getHighestRow();     
    // 取得总列数      
    $highestColumn = $sheet->getHighestColumn(); 
    //循环读取excel文件,读取一条,插入一条
    $data=array();
    //从第一行开始读取数据
    
    $highestColumn=++$highestColumn;
    for($j=1;$j<=$highestRow;$j++){
        //从A列读取数据
        for($k='A';$k!=$highestColumn;$k++){
            $cell = $objPHPExcel->getActiveSheet()->getCell("$k$j");
            $dataType = $cell->getDataType();
            if($dataType == PHPExcel_Cell_DataType::TYPE_NUMERIC){
                $cellstyleformat = $cell->getStyle()->getNumberFormat();  
                $formatcode = $cellstyleformat->getFormatCode();  
                if (preg_match('/^(\[\$[A-Z]*-[0-9A-F]*\])*[hmsdy]/i', $formatcode)) {  
                    $data[$j][] = gmdate("Y-m-d", $shared->ExcelToPHP($objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue()));
                }else{  
                    $data[$j][] = is_object($objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue()) ? $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue()->__toString() : $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
                }
            }else{
                // 读取单元格
                $data[$j][] = is_object($objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue()) ? $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue()->__toString() : $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
            }
        } 
    }

    return $data;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值