thinkphp PHPExcelを使用したインポートとエクスポート

7285 ワード

現在、多くのシーンでExcelを使用してエクスポートされていますが、ThinkPHP 5と結合しています.0フレームワークでは、excelエクスポート機能の実装手順を詳細に説明します.
1-前期準備作業:
  • PHPExcelパッケージ
  • をダウンロード
  • はダウンロードアドレスを提供します.https://github.com/helloworldmy007/PHPExcel
  • は私たちのtpのvendeフォルダの下に置かれています.

  • 2-インポート機能実装
    フロントコードの表示:

    layuiプラグインjsコードを導入する必要があります
    
        layui.use('upload', function(){
            var $ = layui.jquery
                ,upload = layui.upload;
    
            //          
            upload.render({
                elem: '#test8'
                ,exts: 'xlsx|xls' //         
                ,url: '/index.php/index/index/daoru'
                ,auto: false
                //,multiple: true
                ,bindAction: '#test9'
                ,done: function(res){
                console.log(res)
                if(res.code == 1) {
                    layer.msg(res.msg, {'icon': 1});
                    setTimeout(function () {
                        parent.window.location.reload();
                    }, 1000);
                } else {
                    layer.msg(res.msg);
                }
    
            }
        });
    
        });
    
    

    3-バックグラウンドコード
    public function daoru(){
            if($this->request->isPost()){
                $file = $this->request->file('file');
                //           /public/uploads/    
                $info = $file->move(ROOT_PATH . 'public' .DS.'upload'. DS . 'excel');
                if($info){
                    //         
                    $path=ROOT_PATH . 'public' . DS.'upload'.DS .'excel/'.$info->getSaveName();
                    //  PHPExcel 
                    vendor('PHPExcel.PHPExcel');
                    //   PHPExcel (  :           '\')
                    $extension = $info->getExtension();
                    if($extension =='xlsx')
                    {
                        $objReader = new \PHPExcel_Reader_Excel2007();
                    }else
                    {
                        $objReader = new \PHPExcel_Reader_Excel5();
                    }
                    $objPHPExcel = $objReader->load($path,$encode='utf-8');//  excel  
                    $sheet = $objPHPExcel->getSheet(0); //      
                    $highestRow = $sheet->getHighestRow(); //      
                    $highestColumn = $sheet->getHighestColumn(); //      
                    $a=0;
                    //              
                    for($i=2;$i<=$highestRow;$i++)
                    {
                        //*   $i=2? (  Excel        ,      ,        。)
                        $data[$a]['id'] = $objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue();//id
                        $data[$a]['adminname'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();
                        $data[$a]['status'] = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();
                        $data[$a]['icon'] = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();
                        $data[$a]['password'] = $objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue();
                        $data[$a]['up_time'] = $objPHPExcel->getActiveSheet()->getCell("F".$i)->getValue();
                        $data[$a]['addtime'] = $objPHPExcel->getActiveSheet()->getCell("G".$i)->getValue();
                        $data[$a]['delete'] = $objPHPExcel->getActiveSheet()->getCell("H".$i)->getValue();
                        //                        
                        $a++;
                    }
                    //        
                    //dump($data);
                    $aa = Db('admins')->insertAll($data);
                    if($aa){
                        $res['code']=1;
                        $res['msg'] = '    !';
                    }else{
                        $res['code']=0;
                        $res['msg'] = '    !';
                    }
                    return $res;
                }
    
            }
            return $this->fetch();
        }
    

    4-エクスポート機能
    フロントコードの表示:

    5-バックグラウンドコード
    //  xls
        public function daochu(){
            //1.       ,         
            $where =input('param.fw_pici');
            //halt($where);
            $list = Db('fangwei')->where('fw_pici','=',$where)->order('fw_id ASC')->select();
            //2.  PHPExcle  
            vendor('PHPExcel.PHPExcel');
            //3.   PHPExcel 
            $objPHPExcel = new \PHPExcel();
            //4.     sheet 
            $objPHPExcel->setActiveSheetIndex(0);
            //5.     ( excel      )
            $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A1', 'ID')
                ->setCellValue('B1', '   ')
                ->setCellValue('C1', '   ');
            //  A     
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
                ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            //       
            $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10);
            $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(30);
            $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(30);
            //6.         ,        excel  。
            for($i=0;$igetActiveSheet()->setCellValue('A'.($i+2),$list[$i]['fw_id']);//ID
                $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$list[$i]['fw_biaoqianma']);//   
                $objPHPExcel->getActiveSheet()->setCellValue('B'.($i+2),$list[$i]['fw_fangweima']);//   
            }
            //7.     Excel    
            $filename = '     '.date('ymd',time()).'.xls';
            //8.       sheet    ;
            $objPHPExcel->getActiveSheet()->setTitle('   ');
            //9.           
            header("Content-Type: application/force-download");
            header("Content-Type: application/octet-stream");
            header("Content-Type: application/download");
            header('Content-Disposition:inline;filename="'.$filename.'"');
            //  excel  
            $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
            //          
            $objWriter->save('php://output');
            exit;
        }