zoukankan      html  css  js  c++  java
  • tp5做的excel导入导出(用的PHPexcel类)

    //ajax没有流类型,需要另外的处理方式
    //
    应用公共文件 function excelExport($fileName = '', $headArr = [], $data = []) { //引入phpExecl类 vendor("PHPExcel.PHPExcel"); $fileName .= "_" . date("Y_m_d").'.xls'; $objPHPExcel = new PHPExcel(); $objPHPExcel->getProperties(); $key = ord("A"); // 设置表头 foreach ($headArr as $v) { $colum = chr($key); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v); $key += 1; } $column = 2; $objActSheet = $objPHPExcel->getActiveSheet(); foreach ($data as $key => $rows) { // 行写入 $span = ord("A"); foreach ($rows as $keyName => $value) { // 列写入 $objActSheet->setCellValue(chr($span) . $column, $value); $span++; } $column++; } $fileName = iconv("utf-8", "gb2312", $fileName); // 重命名表 $objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表 header('Content-Type: application/vnd.ms-excel'); header("Content-Disposition: attachment;filename='$fileName'"); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); // 文件通过浏览器下载 exit(); }
    public function export()
        {    
            $data = 	hinkCache::get('res_key');
            if(!$data)
            {
                $this->error('请设置要导出的数据','/student_y');
            }
            $name='xxxx';
    
            $header=['考点代码','考点名称','考试时间','考试级别','身份证','中文名','英文名','性别(1男2女)','座位号','缴费'];
    
            excelExport($name,$header,$data);
        }

    导入

    //import
        public function excelInsert()
        {
            if($this->request->isPost())
            {
                $filestr = $this->request->param();
                 Loader::import('PHPExcel',EXTEND_PATH);
                Loader::import('PHPExcel.PHPExcel.IOFactory',EXTEND_PATH);
                Loader::import('PHPExcelPHPExcelReaderExcel5',EXTEND_PATH);
                Loader::import('PHPExcelPHPExcelReaderExcel2007',EXTEND_PATH);
                $file = request()->file('file');
                if($file=='')
                {
                    $this->success('请选择要导入的数据');
                }
                $info = $file->validate(['size'=>156780,'ext'=>'xlsx,xls,csv'])->move(ROOT_PATH . 'public' . DS . 'excel'); 
                if($info)
                {
                    //echo $info->getFilename();
                    $exclePath = $info->getSaveName();  //获取文件名
                    $str=explode('.', $exclePath);
                    $extension = end($str); 
                    $file_name = ROOT_PATH . 'public' . DS . 'excel' . DS . $exclePath;
                    //$objReader =PHPExcel_IOFactory::createReader("Excel5");
                    if( $extension =='xlsx' )
                    {
                        $objReader =PHPExcel_IOFactory::createReader("Excel2007");
                    }
                    else
                    {
                        $objReader =PHPExcel_IOFactory::createReader("Excel5");
                    }
                    $obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8');  //加载文件内容,编码utf-8
                    $excel_array=$obj_PHPExcel->getsheet(0)->toArray();   //转换为数组格式
                    array_shift($excel_array);                
                    $data = [];
                    foreach($excel_array as $k=>$v)
                    {
                        $data[$k]['room_number'] = isset($v[0])==true ? $v[0] : '';//考点代码
                        $data[$k]['idcard'] = isset($v[1])==true ? $v[1] : '';    //身份证
                        $data[$k]['en_name'] = isset($v[2])==true ? $v[2] : '';    
                        $data[$k]['cn_name'] = isset($v[3])==true ? $v[3] : '';
                        $data[$k]['sex'] = intval(isset($v[4])==true ? $v[4] : '');
                        $data[$k]['seat_number'] = isset($v[5])==true ? $v[5] : '';
                        $data[$k]['birthday'] = isset($v[6])==true ? $v[6] : '';
                        $data[$k]['mobile'] = intval(isset($v[7])==true ? $v[7] : '');
                        $data[$k]['house_address'] = isset($v[8])==true ? $v[8] : '';
                        $data[$k]['email'] = isset($v[9])==true ? $v[9] : '';
                        $data[$k]['places'] = isset($v[10])==true ? $v[10] : '';
                        $data[$k]['exam_num'] = isset($v[11])==true ? $v[11] : '';
                        $data[$k]['res'] = isset($v[12])==true ? $v[12] : '';
                        $data[$k]['res2'] = isset($v[13])==true ? $v[13] : '';
                        $data[$k]['school'] = isset($v[14])==true ? $v[14] : '';
                        $data[$k]['res_time'] = isset($v[15])==true ? $v[15] : '0';
                        $data[$k]['price'] = isset($v[16])==true ? $v[16] : '';
                        $data[$k]['group'] = isset($v[17])==true ? $v[17] : '';
                        $data[$k]['flag'] = isset($v[18])==true ? $v[18] : '';
                        $data[$k]['status'] = 1;
                        
                    }
                    $rtn = Db::table('ncet_student')->insertAll($data); //批量插入数据
                    if($rtn)
                    {
                        $this->success('导入完成');
                    }
                    else
                    {
                        $this->success('导入失败');
                    }
                }
                else
                {
                    echo $file->getError();
                }
            }
        }


    //改进版
    function downExplode()
        {
            $batchid = $this->input->get('batchid');
            if($batchid)
            {
                $batchArr = $this->db->select('*')->from('mba_interview_result')->where(['batch_id'=>$batchid])->get()->result_array();            
                $userArr = array();
                $res = array();
                foreach($batchArr as $k=>$v)
                {
                    if(is_string($v['personal_interview']))
                    {
                        $result = json_decode($v['personal_interview'],true);
                        $res[] = $result;
                        foreach($result as $k2=>$v2)
                        {
                            $userArr[$k2]['name'] = $this->name($k2,'name');
                            $userArr[$k2]['idcard'] = $this->name($k2,'idcard');
                            $userArr[$k2]['kaochang_id'] = $this->kaochang($v['session_id']);
                            /* 获取学生的考官id */
                            $groupid = $this->db->select('id')->from('mmmmmm')->where(['session_id'=>$v['session_id'],'kaochang_id'=>$v['kaochang_id']])->get()->result_array();
                            //教师数量
                            $tArr = $this->db->select('teacher_id')->from('mmmmmm')->where(['group_id'=>$groupid[0]['id']])->get()->result_array();
                            $i=0;
                            foreach($tArr as $k3=>$v3)
                            {
                                $userArr[$k2]["t_".$i] = $this->getRecommend($k2,$v['session_id'],$v['batch_id'],$v3);
                                $i++;
                            }
                        }
                    }
                }
                
                $count=0;
                foreach($userArr as $k=>$v)
                {    
                    $i=0;
                    foreach($v as $k2=>$v2)
                    {
                        $count+=$v["t_".$i];                
                        $i++;
                    }
                    $userArr[$k]['recommend'] = $count;
                    $count=0;
                }
                 
                //导出
                include($_SERVER['DOCUMENT_ROOT']."/resource/PHPExcel/Classes/PHPExcel.php");
                include($_SERVER['DOCUMENT_ROOT']."/resource/PHPExcel/Classes/PHPExcel/IOFactory.php");
                $objPHPExcel = new PHPExcel();
                $i=1;
                foreach($tArr as $index=>$val)
                {
                    $title['name'] = '姓名';
                    $title['idcard']='身份证号';
                    $title['session']='考场';
                    $title["interview".$i] = '考官'.$i;
                    //$title["recommend"] = '推荐数量';
                    $i++;
                }
                $title["recommend"] = '推荐数量';
                
                $i=1;
                foreach($title as $index=>$val)
                {
                    $y = chr(64+$i);
                    $x = 1;
                    $objPHPExcel->setActiveSheetIndex(0)->setCellValue($y.$x,$val);
                    $i++;
                }
                
                foreach($userArr as $k=>$v)
                {
                    if(!$v['recommend'])
                    {
                        unset($userArr[$k]);
                    }
                }
                
                
                
                $x=1;
                foreach($userArr as $k=>$v)
                {
                    if($v['name'])
                    {
                        $x++;
                        
                    }
                    $i=1;
                    foreach($v as $k2=>$v2)
                    {
                        $i++;
                        $y = chr(63+$i);
                        $objPHPExcel->getActiveSheet()->setCellValueExplicit($y.$x,$v2,PHPExcel_Cell_DataType::TYPE_STRING);
                    }
                }
                
                //die;
                $fileName = iconv("utf-8", "gb2312", '考官推荐'); // 重命名表
    
                $objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表
    
                header('Content-Type: application/vnd.ms-excel');
    
                header("Content-Disposition: attachment;filename='$fileName'.xls");
    
                header('Cache-Control: max-age=0');
    
                $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    
                $objWriter->save('php://output'); // 文件通过浏览器下载
    
                exit();            
            }
        }
    
    
    
     

    function downExplode(){$batchid = $this->input->get('batchid');if($batchid){$batchArr = $this->db->select('*')->from('mba_interview_result')->where(['batch_id'=>$batchid])->get()->result_array();$userArr = array();$res = array();foreach($batchArr as $k=>$v){if(is_string($v['personal_interview'])){$result = json_decode($v['personal_interview'],true);$res[] = $result;foreach($result as $k2=>$v2){$userArr[$k2]['name'] = $this->name($k2,'name');$userArr[$k2]['idcard'] = $this->name($k2,'idcard');$userArr[$k2]['kaochang_id'] = $this->kaochang($v['session_id']);/* 获取学生的考官id */$groupid = $this->db->select('id')->from('mba_interview_group')->where(['session_id'=>$v['session_id'],'kaochang_id'=>$v['kaochang_id']])->get()->result_array();//教师数量$tArr = $this->db->select('teacher_id')->from('mba_interview_group_teacher')->where(['group_id'=>$groupid[0]['id']])->get()->result_array();$i=0;foreach($tArr as $k3=>$v3){$userArr[$k2]["t_".$i] = $this->getRecommend($k2,$v['session_id'],$v['batch_id'],$v3);$i++;}}}}/* echo '<pre>';print_r($userArr);echo '</pre>';die; */$count=0;foreach($userArr as $k=>$v){$i=0;foreach($v as $k2=>$v2){$count+=$v["t_".$i];$i++;}$userArr[$k]['recommend'] = $count;$count=0;} //导出include($_SERVER['DOCUMENT_ROOT']."/resource/PHPExcel/Classes/PHPExcel.php");include($_SERVER['DOCUMENT_ROOT']."/resource/PHPExcel/Classes/PHPExcel/IOFactory.php");$objPHPExcel = new PHPExcel();$i=1;foreach($tArr as $index=>$val){$title['name'] = '姓名';$title['idcard']='身份证号';$title['session']='考场';$title["interview".$i] = '考官'.$i;//$title["recommend"] = '推荐数量';$i++;}$title["recommend"] = '推荐数量';$i=1;foreach($title as $index=>$val){$y = chr(64+$i);$x = 1;$objPHPExcel->setActiveSheetIndex(0)->setCellValue($y.$x,$val);$i++;}foreach($userArr as $k=>$v){if(!$v['recommend']){unset($userArr[$k]);}}$x=1;foreach($userArr as $k=>$v){if($v['name']){$x++;}$i=1;foreach($v as $k2=>$v2){$i++;$y = chr(63+$i);$objPHPExcel->getActiveSheet()->setCellValueExplicit($y.$x,$v2,PHPExcel_Cell_DataType::TYPE_STRING);}}//die;$fileName = iconv("utf-8", "gb2312", '考官推荐'); // 重命名表
    $objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表
    header('Content-Type: application/vnd.ms-excel');
    header("Content-Disposition: attachment;filename='$fileName'.xls");
    header('Cache-Control: max-age=0');
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output'); // 文件通过浏览器下载
    exit();}}

  • 相关阅读:
    Educational Codeforces Round 10 C. Foe Pairs 水题
    Educational Codeforces Round 10 B. z-sort 构造
    CDOJ 1048 Bob's vector 三分
    Educational Codeforces Round 10 A. Gabriel and Caterpillar 模拟
    第14届电子科大初赛民间盗版部分题目题解
    HDU 5654 xiaoxin and his watermelon candy 离线树状数组 区间不同数的个数
    HDU 5653 Bomber Man wants to bomb an Array. dp
    HDU 5652 India and China Origins 二分+并查集
    HDU 5651 xiaoxin juju needs help 数学
    HDU 5650 so easy 数学
  • 原文地址:https://www.cnblogs.com/zhangxiangdong/p/8794905.html
Copyright © 2011-2022 走看看