excel导入:
不管导入还是导出都要引入PHPexcel类
PHPExcel自行下载
导入前台代码:
<div style="margin:15px;">
<form method="post" action="{:U(Temporary/comein)}" enctype="multipart/form-data">
<h3>导入Excel表:</h3><input type="file" name="excel" />
<input type="submit" value="导入" />
</form>
</div>
导入后台代码:
public function comein()
{
if (!empty($_FILES)) {
$upload = new \Think\Upload();
$upload->maxSize = 3145728 ;// 设置附件上传大小
$upload->exts = array('xlsx','xls');// 设置附件上传类型
$upload->rootPath ='./upload/Excel/';
// 上传文件,保存到upload下,在跟目录下建upload/Excel文件夹
$info = $upload->upload();
if(!$info) {
// 上传错误提示错误信息
$this->error($upload->getError());
}else{
// 上传成功 获取上传文件信息
$file_name=$upload->rootPath.$info['excel']['savepath'].$info['excel']["savename"];//地址等于更目录加上创建的子目录加上文件名
}
vendor("PHPExcel.PHPExcel");
/*另一种导入
* 与下面的哪一种导入同样效果
$objPHPExcel = \PHPExcel_IOFactory::load($file_name);
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
dump($sheetData);die;*/
//文件名为文件路径和文件名的拼接字符串
$objReader = \PHPExcel_IOFactory::createReader('Excel2007');//创建读取实例
$objPHPExcel = $objReader->load($file_name,$encode='utf-8');//加载文件
$sheet = $objPHPExcel->getSheet(0);//取得sheet(0)表
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数
for($i=0;$i<=$highestRow;$i++)
{
$data[]['login_pk']=$objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue();
$data[]['8888'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();
// $data['login_time'] = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();
// $data['login_ip']= $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();
// M('member_login_log')->add($data);
}
dump($data);exit;//在这里可以打印data,结果为将excel里面的内容转换成数组
$this->success('导入成功!');
}else
{
$this->display();
}
}
导出数据到excel:
将搜索的条件分配给前台页面
$this->assign('urlgetdata', I('get.'));
前台页面得到数据,通过 href="{:U('youKe_e',$urlgetdata)}" 在传到后台
<div class="admin-content">
<div class="am-cf am-padding">
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">账号运营数据</strong> </div>
<div class="am-btn-group am-btn-group-xs" style="float:right">
<a title='导出当前筛选条件下的订单' href="{:U('youKe_e',$urlgetdata)}" class="am-btn am-btn-warning" >导出订单</a>
</div>
</div>
#活跃(游客)excel
public function youKe_e()
{
$data = I('get.');
if ($data) {
$begintime = strtotime($data['begintime']);
$endtime = strtotime($data['endtime']) + 24 * 3600;
// $res = date('Y-m-d H:i:s',$endtime);
$where['created_at'] = array(array('ELT', date("Y-m-d H:i:s", $endtime)), array('EGT', date("Y-m-d H:i:s", $begintime)));
$where['user_id'] = 0;
/* $data = M("user_analysislogs")->field('a.created_at,a.channelname,a.device_id,b.phone,b.name')->alias('a')->join('left join cc_users as b on a.user_id = b.id')->where($where)->group('a.user_id')->having("channelname != ' '")->select();*/
// $cc =M("user_analysislogs")-> getLastSql();
// dump($cc);
$pagesize = 10;
$total_a = M('user_analysislogs')->where($where)->group('device_id')->select();
$total = count($total_a);
$page = page($total, $pagesize);
$page_html = $page->show();
$this->assign('page_html', $page_html);
$orderlist = M('user_analysislogs')->field('user_id,channelname,created_at,device_id')->where($where)->group('device_id')->order('created_at asc')->select();
$top = array('触发时间',
'渠道名称',
'设备号',
);
$data = array();
foreach ($orderlist as $k => $v) {
$data[$k] = array($v['created_at'],
$v['channelname'],
$v['device_id'],
);
}
//$top为首行标题 $data为数据
getexport($top, $data, '活跃(游客)报表');
exit();
}
}
function getExport($top,$data,$name){
Vendor('PHPExcel.PHPExcel','','.php');
$date = date("Y_m_d",time());
$fileName .= $name."_{$date}.xlsx";
$fileName=mb_convert_encoding($fileName,"gb2312","utf-8");
//创建新的PHPExcel对象
$objPHPExcel = new \PHPExcel();
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(34);//设置宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(34);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(34);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(34);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(34);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(34);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(34);
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(34);
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(34);
$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(34);
$objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(34);
$objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(34);
$objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(34);
/*
$objPHPExcel -> getActiveSheet() -> getColumnDimension(PHPExcel_Cell::stringFromColumnIndex(0)) -> setAutoSize(true);//自动调整单元格的宽度*/
$objProps = $objPHPExcel->getProperties();
$objProps->setCreator("Zeal Li");
$objProps->setLastModifiedBy("Zeal Li");
$objProps->setTitle("Office XLS Test Document");
$objProps->setSubject("Office XLS Test Document, Demo");
$objProps->setDescription("Test document, generated by PHPExcel.");
$objProps->setKeywords("office excel PHPExcel");
$objProps->setCategory("Test");
$objPHPExcel->setActiveSheetIndex(0);
$objActSheet = $objPHPExcel->getActiveSheet();
//设置当前活动sheet的名称
$objActSheet->setTitle('sheet1');
//*************************************
//设置单元格内容
//由PHPExcel根据传入内容自动判断单元格内容类型
$zm = array('A1','B1','C1','D1','E1','F1','G1','H1','I1','J1','K1','L1','M1','N1','O1',
'P1','Q1','R1','S1','T1','U1','V1','W1','X1','Y1','Z1');
$z = 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');
foreach($zm as $kk=>$vv){
$objActSheet->setCellValue($vv, $top[$kk]);
}
$n=1;
foreach($data as $val){
$n++;
foreach($val as $k=>$v){
$objActSheet->setCellValueExplicit($z[$k].$n, $v,\PHPExcel_Cell_DataType::TYPE_STRING);
}
}
header("Content-Type:application/octet-stream;charset=utf-8");
header('Content-Disposition: attachment; filename=' . $fileName);
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');//注意excel版本
$objWriter->save('php://output');
}