OneThink+PHPExcel靈活適應導入數據Excel表(導入)

由上篇而來,直接上代碼,聊以小記.

//導入函數
    /*
     *    find(999)  999爲數據庫的主鍵id
     * 	  find(999)  用於獲得表的字段
     * 	  $_POST['modelid'] 
      */
   //$expTitle=>表的主題,$expCellName=>表頭名(列名),$expTableData=>數據(以下采用數字索引數組)
     public function importExcel()     
    {
    /**
         * Excel導入函數
         * 
         */
        if (!empty($_FILES)) {
            
            $config = array(
                'maxSize'    =>    3145728,
                'rootPath'   =>    './Uploads/',
                'savePath'   =>    'Excel/',
                'saveName'   =>    array('uniqid',''),
                'exts'       =>    array('xlsx','csv','xls'),
                'autoSub'    =>    true,
                'subName'    =>    array('date','Ymd'),
            );
            $upload = new \Think\Upload($config);
            $info = $upload->upload();
            if(!$info) {
                $this->error($upload->getError());
            }else{
                foreach($info as $file) {
                    $file_name = $config['rootPath'].$file['savepath'].$file['savename'];
                }
            }
            vendor("PHPExcel.PHPExcel");
            $extension = substr(strrchr($file_name,"."),1);
            if( $extension =='csv' )
            {
                $objReader = \PHPExcel_IOFactory::createReader('CSV');
            }
            else
            {
                 $objReader = \PHPExcel_IOFactory::createReader('Excel2007');
            }
             $cellName = 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','AA',
             'AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN',
             'AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');
            $objPHPExcel = $objReader->load($file_name,$encode='utf-8');
            $sheet = $objPHPExcel->getSheet(0);
            $highestRow = $sheet->getHighestRow(); // 取得總行數
            $highestColumn = $sheet->getHighestColumn(); // 取得總列數
            
            $model =    M('CompanyTaxation');
            $new = array();
            //獲得表的字段
            $list = $model->find(999);
            $i=0;
            foreach($list as $key => $val){//數字化數組的key  便於下面讀取數據  [j][i];
            	$new[$i] = $key;
            	$i++;
            	unset($list[$key]);
            }
            
            //var_dump($new);die;  
        	$ecxel = $objPHPExcel->getActiveSheet();
            //第3行B列起  1行表標題 2行表頭
            for($i=3;$i<=$highestRow;$i++)
            {
               for($j=1;$j<sizeof($new);$j++){//去除第一列的NO
               		if($new[$j] == "tax_month"){
               			$data[$new[$j]]=  totime($ecxel->getCell($cellName[$j].$i)->getValue());//數據
               		}elseif($new[$j] == "bid"){
               			//echo $ecxel->getCell($cellName[$j].$i)->getValue();die;
               			$data[$new[$j]]=  get_id_by_name($ecxel->getCell($cellName[$j].$i)->getValue(),"Building");//數據
               		}elseif($new[$j] == "cid"){
               			$data[$new[$j]]=  get_id_by_name($ecxel->getCell($cellName[$j].$i)->getValue(),"Company");//數據
               		}else{
               			$data[$new[$j]]=  $ecxel->getCell($cellName[$j].$i)->getValue();//普通數據
               		}
                	
               }
            	   $data['uid'] = UID;
            	   $data['status'] = 1;
            	//echo "<pre>"; var_dump($data);die;     
                $model->add($data);
            }
            $this->success('導入成功!',U('lists?model='.$_POST['modelid']));
        }else
        {
            $this->error("請選擇上傳的文件");
        }
    }

下面是html代碼:

    <!-- 導入界面  -->
    <div id="import" style="position:relative;display: none; z-index:5;background:#ccc">
    	<div style=" width: 400px; height: 600px;vertical-align: middle;
  text-align: center; margin-left: 240px;">
  						<h3>樓宇{$model['title']}導入</h3>
    	  <form action="__URL__/importExcel" method="post" enctype="multipart/form-data">
                <input type="file" name="import"  style="width: 160px;margin: 150px" />
                <input type="hidden" name="modelid" value="{$model['id']}"/>
                <br />
                <input type="submit" value="導入" style="width: 120px;"  />
                <input type="button" id='exit' value="退出"  style="width: 120px;" />
           </form>
           </div>
    </div>
    <!-- 導入界面END  -->
   

可以去這裏下載PHPExcelhttp://download.csdn.net/detail/sct_t/9777365


發佈了33 篇原創文章 · 獲贊 27 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章