ThinkPhp导入excel和导出excel

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');
  }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值