Thinkphp導入、導出Excel表格

Thinkphp中導出Excel表格具體方法如下:
1.在ThinkPHP/Library/Vendor目錄下新建文件夾PHPExcel,將excel文件解壓後放入文件夾中。
(下載地址:鏈接:http://pan.baidu.com/s/1kUVTUez 密碼:3kxl)
 

2、代碼如下:(方法一)

 

        //引入PHPExcel庫文件
        Vendor('PHPExcel.Classes.PHPExcel');
        //創建對象
        $excel = new PHPExcel();
        //Excel表格式,這裏簡略寫了8列
        $letter = array('A','B','C','D','E','F','F','G');
        //表頭數組
        $tableheader = array('序號','客棧名稱','客棧地址','座機','手機','QQ','郵箱');
        //填充表頭信息
        for($i = 0;$i < count($tableheader);$i++) {
            $excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");
        }
        //表格數組
        $data = array(
                array('1','B','C','D','E','F','G'),
                array('2','B','C','D','E','F','G'),
                array('3','B','C','D','E','F','G'),
                array('4','B','C','D','E','F','G'),
                array('5','B','C','D','E','F','G'),
                array('6','B','C','D','E','F','G'),
               array('7','B','C','D','E','F','G'),
        );
        //填充表格信息
        for ($i = 2;$i <= count($data) + 1;$i++) {
            $j = 0;
            foreach ($data[$i - 2] as $key=>$value) {
                $excel->getActiveSheet()->setCellValue("$letter[$j]$i","$value");
                $j++;
            }
        }
        //創建Excel輸入對象
        $write = new PHPExcel_Writer_Excel5($excel);
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
        header("Content-Type:application/force-download");
        header("Content-Type:application/vnd.ms-execl");
        header("Content-Type:application/octet-stream");
        header("Content-Type:application/download");;
        header('Content-Disposition:attachment;filename="客棧信息.xls"');
        header("Content-Transfer-Encoding:binary");
        $write->save('php://output');

 

方法二

//導出xls
        public function daochu(){
            //1.從數據庫中取出數據
              $where =input('param.fw_pici');
                //halt($where);
        $list = Db('fangwei')->where('fw_pici','=',$where)->order('fw_id ASC')->select();
                //halt($list);
        //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); 
        //6.循環剛取出來的數組,將數據逐一添加到excel表格。
        for($i=0;$i<count($list);$i++){
            $objPHPExcel->getActiveSheet()->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;
        }

 

導入

    public function inOffice()
    {
        vendor("PHPExcel.PHPExcel"); //方法一
        $objPHPExcel = new \PHPExcel();
        //獲取表單上傳文件
        $file = request()->file('excel');
        $info = $file->validate(['ext'=>'xlsx,xls,csv'])->move(ROOT_PATH . 'public' . DS . 'excel');
        if($info){
            //獲取文件名
            $exclePath = $info->getSaveName();
            //上傳文件的地址
            $file_name = ROOT_PATH . 'public' . DS . 'excel' . DS . $exclePath;
            $objReader = \PHPExcel_IOFactory::createReader('Excel5');
            //加載文件內容,編碼utf-8
            $obj_PHPExcel = $objReader->load($file_name, $encode = 'utf-8');

           // echo "<pre>";
            $excel_array = $obj_PHPExcel->getsheet(0)->toArray();   //轉換爲數組格式
            //array_shift($excel_array);  //刪除第一個數組(標題);
            $data = [];
            foreach ($excel_array as $k => $v) {
                //$data[$k]['name'] = $v['0'];
                $data[$k]['parent_id'] = $v['1'];
                //$data[$k]['address'] = $v['2'];
                $data[$k]['name_zh'] = $v['3'];
                $data[$k]['name_en'] = $v['4'];
                $data[$k]['code_number'] = $v['6'];
                $data[$k]['code_en'] = $v['7'];
            }
            //var_dump($data);
            //批量插入數據
            $success = Db::name('area')->insertAll($data);
            echo '數據添加成功';
        }else{
            // 上傳失敗獲取錯誤信息
            echo $file->getError();
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章