excel导出是早就做好了的,当时没有记录来源。现在在做短信群发,要用的excel导入就一起记在日记了。
/* 导出excel * $expTitle 标题前缀 $expCellName 字段 $expTableData 数据 $condition 条件说明 */ public function exportExcel($expTitle,$expCellName,$expTableData,$condition) { $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称 $fileName = $xlsTitle.date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定 $cellNum = count($expCellName); $dataNum = count($expTableData); vendor("PHPExcel.PHPExcel");//引入phpexcel $objPHPExcel = new PHPExcel(); //实例化 $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N'); $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格 $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1',$condition.'mobile时间:'.date('Y-m-dH:i:s')); for($i=0;$i<$cellNum;$i++){ $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]); } for($i=0;$i<$dataNum;$i++){ for($j=0;$j<$cellNum;$j++){ $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3),$expTableData[$i][$expCellName[$j][0]]); } } header('pragma:public'); header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"'); header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印 inline本窗口 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit; } /*调用*/ public function export($xlsData){ $xlsName ='xy'; $xlsCell = array( array('name','姓名'), array('phone','手机号'), array('city','城市'), array('address','详细地址'), array('time','报名时间') ); $xlscondition=""; $this->exportExcel($xlsName,$xlsCell,$xlsData,$xlscondition); }
/* 导入 excel*/ public function importExcel($file,$sheet=0) { vendor("PHPExcel.PHPExcel");//引入phpexcel $PHPExcel = new PHPExcel(); $PHPReader = new PHPExcel_Reader_Excel2007(); if(!$PHPReader->canRead($file)){ $PHPReader = new PHPExcel_Reader_Excel5(); if(!$PHPReader->canRead($file)){ echo 'no Excel'; return ; } } $PHPExcel = $PHPReader->load($file);//建立excel对象 $currentSheet = $PHPExcel->getSheet($sheet);//读取指定sheet表 $allColumn = $currentSheet->getHighestColumn();//取得最大的序号 $allRow = $currentSheet->getHighestRow();//一共有多少行 $data=array(); for($currentRow = 1; $currentRow<=$allRow; $currentRow++){ for($currentColumn='A'; $currentColumn<=$allColumn; $currentColumn++){ $address = $currentColumn.$currentRow; $date[]= $currentSheet->getCell($address)->getValue(); } } return $date; } /*上传调用*/ if ($_FILES["file"]["error"] > 0){ $this->error("Error: " . $_FILES["file"]["error"]); }else{ $excaldata=$this->importExcel($_FILES["file"]["tmp_name"]); //临时存储地址 }
版本tp3.1,php5.2.17,IIS6,在 new PHPExcel(); 时报错, 加入反斜杠 new \PHPExcel();后显示正常。目前不知具体报错原因。
本次导入excel是用于短信群发,另尝试了一下直接从textarea输入手机号,以换行符为分隔符。但数组的值也可能因输入不当存在空格。
$mobile_list = trim($_POST['mobile']); $mobile_arr = explode("\r\n", $mobile_list );