个人总结的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_CachedObjectStorageFactory::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
$cell = $sheettmp->getCell($excellie[$k].$i)->getCalculatedValue();
if($cell instanceof PHPExcel_RichText){ //富文本转换字符串
$cell = $cell->__toString();
}
$Detail[] = $cell;
}
$excelArr[$index] = $Detail;
$index++;
}
return $excelArr;
}