thinkphp 导出导入表格 PHPExcel
PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考(PHPExcel自己百度下载这里不介绍了)。
下载phpExcel插件的地址:https://files.cnblogs.com/williamhu/Classes.rar
加压后放到\Extend\Vendor\里,然后就是编写代码了:
/**
* phpEscel导出用户表
* @author H.J.H
* date 2014.8.5 11:10
*/
function pushExcel(){
if($_SESSION['admin']['role_id'] != 1) {
$this->error('无权限操作');
}
$total=$this->_mod->count('id');//总数
$res=$this->_mod->field('id,share_id,username,mobile,gender,address,last_time')->select();
Vendor("Classes.PHPExcel");
Vendor("Classes.PHPExcel.php");
//创建处理对象实例
$objPhpExcel=new PHPExcel();
$objPhpExcel->getActiveSheet()->getDefaultColumnDimension()->setAutoSize(true);//设置单元格宽度
//设置表格的宽度 手动
$objPhpExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$objPhpExcel->getActiveSheet()->getColumnDimension('H')->setWidth(15);
$objPhpExcel->getActiveSheet()->getColumnDimension('I')->setWidth(15);
$objPhpExcel->getActiveSheet()->getColumnDimension('J')->setWidth(20);
//设置标题
$rowVal = array(0=>'编号',1=>'级', 2=>'用户名', 3=>'手机号', 4=>'性别',5=>'地址',6=>'推荐人数',7=>'登录时间',8=>'会员总数');
foreach ($rowVal as $k=>$r){
$objPhpExcel->getActiveSheet()->getStyleByColumnAndRow($k,1)
->getFont()->setBold(true);//字体加粗
$objPhpExcel->getActiveSheet()->getStyleByColumnAndRow($k,1)->
getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//文字居中
$objPhpExcel->getActiveSheet()->setCellValueByColumnAndRow($k,1,$r);
}
$objPhpExcel->getActiveSheet()->setCellValue('A1', '编号');
$objPhpExcel->getActiveSheet()->setCellValue('B1', '用户名');
$objPhpExcel->getActiveSheet()->setCellValue('C1', '推荐者');
$objPhpExcel->getActiveSheet()->setCellValue('D1', '手机号');
$objPhpExcel->getActiveSheet()->setCellValue('E1', '性别');
$objPhpExcel->getActiveSheet()->setCellValue('F1', '地址');
$objPhpExcel->getActiveSheet()->setCellValue('G1', '推荐人数');
$objPhpExcel->getActiveSheet()->setCellValue('H1', '最后登录时间');
$objPhpExcel->getActiveSheet()->setCellValue('I1', '总会员数');
//设置当前的sheet索引 用于后续内容操作
$objPhpExcel->setActiveSheetIndex(0);
$objActSheet=$objPhpExcel->getActiveSheet();
//设置当前活动的sheet的名称
$title="公司用户录";
$objActSheet->setTitle($title);
//设置单元格内容
foreach($res as $k => $v)
{
$v['count']=$this->_mod->where('share_id='.$v['id'])->count('id');//推荐人数
$v['tname']=$this->_mod->where('id='.$v['share_id'])->getfield('username');//推荐人
if($v['gender']==1){
$v['gender']="男";
}elseif ($v['gender']==0){
$v['gender']="女";
}else {
$v['gender']="";
}
$v['last_time']=$v['last_time']==0 ? '' : date('Y-m-d H:i',$v['last_time']);
$num=$k+2;
$objPhpExcel->setActiveSheetIndex(0)
//Excel的第A列,uid是你查出数组的键值,下面以此类推
->setCellValue('A'.$num, $v['id'])
->setCellValue('B'.$num, $v['username'])
->setCellValue('C'.$num, $v['tname'])
->setCellValue('D'.$num, $v['mobile'])
->setCellValue('E'.$num, $v['gender'])
->setCellValue('F'.$num, $v['address'])
->setCellValue('G'.$num, $v['count'])
->setCellValue('H'.$num, $v['last_time']);
}
$objPhpExcel->setActiveSheetIndex(0)->setCellValue('I2', $total);
$title="公司用户录";
$name=date('Y-m-d');//设置文件名
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Transfer-Encoding:utf-8");
header("Pragma: no-cache");
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$title.'_'.urlencode($name).'.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPhpExcel, 'Excel5');
$objWriter->save('php://output');
}
还有个小小的提示,那就是:
在thinkphp中用phpexcel导出数据错误
<b>Fatal error</b>: print_r() [<a href='ref.outcontrol'>ref.outcontrol</a>]: Cannot use output buffering in
output buffering display handlers in <b>D:\www\bjydf\ThinkPHP\Common\common.php</b> on line <b>601</b><br />
导出文件打开显示以上错误,数据没有到成功,实质原因是在thinkphp配置文件中加上
<b>Fatal error</b>: print_r() [<a href='ref.outcontrol'>ref.outcontrol</a>]: Cannot use output buffering in
output buffering display handlers in <b>D:\www\bjydf\ThinkPHP\Common\common.php</b> on line <b>601</b><br />
导出文件打开显示以上错误,数据没有到成功,实质原因是在thinkphp配置文件中加上
'OUTPUT_ENCODE' => false,
是因为thinkphp3.0以后默认开启了”网页压缩输出”。关闭就好了
//导入数据 2014.9.19 H.J.H public function out_put(){ if($_POST['leadExcel'] == "true"){ $tmp_name = $_FILES['inputExcel']['tmp_name']; Vendor("Classes.PHPExcel"); Vendor("Classes.PHPExcel.php"); Vendor("Classes.PHPExcel.IOFactory"); Vendor("Classes.PHPExcel.Reader.Excel5"); $objReader = PHPExcel_IOFactory::createReader('Excel5'); $objPHPExcel = $objReader->load($tmp_name); $sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); // 取得总行数 $highestColumn = $sheet->getHighestColumn(); // 取得总列数 $k = 0; for($j=2;$j<=$highestRow;$j++){ $data['username'] = $objPHPExcel->getActiveSheet()->getCell("B".$j)->getValue(); $data['mobile'] = $objPHPExcel->getActiveSheet()->getCell("C".$j)->getValue(); $data['address'] = $objPHPExcel->getActiveSheet()->getCell("D".$j)->getValue(); $data['city_id'] = $objPHPExcel->getActiveSheet()->getCell("F".$j)->getValue(); $data['share_id']=1332; $data['password']='96e79218965eb72c92a549dd5a330112'; $data['gender']=2; $data['last_time']=time()-60*60*24*$j; $data['reg_time']=time()-60*60*24*$j; $data['status']=1; $last_id = $this->_mod->add($data);//生成id if($last_id){ echo "第".$j."行导入成功,fph_user表第:".$last_id."条 "; }else { echo "第".$j."行导入失败<br/>"; } } } }

浙公网安备 33010602011771号