thinkphp 3.2利用phpexcel 导入 超过26列的数据

前面刚刚写过 利用phpexcel 导出超过26列的数据,这里一些之前的准备就不说了先,就是吧phpexcel放到项目指定文件夹,并进行引入(如果不会可以看下我的phpexcel导出那篇文章)

言归正传,直接上代码吧 首先是简单的html部分 就2句话。如下

<form action="{:U('Pro/upload')}" method="post" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="submit" value="导入"/>
</form>

然后下面部分是核心 就是后台的导入:
  1    public function upload(){
  2 
  3         $upload=new \Think\Upload();                                //实例化上传类
  4         $upload->maxSize   =     3145728;                           //设置附件上传大小
  5         $upload->exts      =     array('xlsx','xls');               //设置附件上传类型
  6         $upload->rootPath  =      './Uploads/';                     //设置附件上传根目录(没有则需手动新建)
  7         $upload->savePath  =      '';                               //设置附件上传(子)目录
  8         //上传文件
  9         $info   =   $upload->upload();
 10         if(!$info){                                                 //上传错误提示错误信息
 11           $this->error($upload->getError());
 12 
 13         }else{                                                      //上传成功获取上传文件信息
 14        foreach($info as $file){
 15         //echo $file['savepath'].$file['savename'];
 16         //这里的路径为网站根目录下Uploads/2016-02-19/56c7056f732ff.xlsx
 17         $filePath="Uploads/".$file['savepath'].$file['savename'];
 18         //等价于
 19         //$filePath = __ROOT__."Uploads/" .$file['savepath'].$file['savename'];
 20     }
 21         echo "<h3>".$filePath."文件上传成功!</h3><p>";
 22        //上传成功则开始导入到mysql中
 23         $result=$this->importExcel($filePath);
 24         echo $result['message'];
 25 }
 26 }
 27 
 28     public function importExcel($file){
 29         //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
 30         import("Org.Util.PHPExcel");
 31         import("Org.Util.PHPExcel.Writer.Excel5");
 32         import("Org.Util.PHPExcel.IOFactory.php");
 33 
 34         if(!file_exists($file)){
 35             return array("error"=>0,'message'=>'file not found!');
 36         }
 37         vendor("PHPExcel.Classes.PHPExcel.IOFactory");
 38         //出现:Class 'Admin\Controller\PHPExcel_IOFactory' not found
 39         //注意这儿加了一个"\"表示调用公共空间,也可以理解为顶层
 40         //$objReader = \PHPExcel_IOFactory::createReader('Excel5');
 41         //获取excel文件:获取Excel第1张表即(Sheet1)
 42         $objPHPExcel= \PHPExcel_IOFactory::load($file);
 43         $objPHPExcel->setActiveSheetIndex(0);
 44         $sheet1=$objPHPExcel->getSheet(0);
 45         //获取行数,并把数据读取出来$data数组
 46         $rowCount=$sheet1->getHighestRow();//excel行数
 47         $data=array();
 48         for($i=2;$i<=$rowCount;$i++){
 49 
 50             $item['LieferantNr']=$sheet1->getCellByColumnAndRow(1,$i)->getValue();
 51             $item['DerProdukt1']=$sheet1->getCellByColumnAndRow(2,$i)->getValue();
 52             $item['DerProdukt2']=$sheet1->getCellByColumnAndRow(3,$i)->getValue();
 53             $item['ProduktaufChinesisch']=$sheet1->getCellByColumnAndRow(4,$i)->getValue();
 54             $item['ArtikelNr']=$sheet1->getCellByColumnAndRow(5,$i)->getValue();
 55             $item['EAN1']=$sheet1->getCellByColumnAndRow(6,$i)->getValue();
 56             $item['EAN2']=$sheet1->getCellByColumnAndRow(7,$i)->getValue();
 57             $item['EAN3']=$sheet1->getCellByColumnAndRow(8,$i)->getValue();
 58             $item['EAN4']=$sheet1->getCellByColumnAndRow(9,$i)->getValue();
 59             $item['Marken']=$sheet1->getCellByColumnAndRow(10,$i)->getValue();
 60             $item['Kategorie']=$sheet1->getCellByColumnAndRow(11,$i)->getValue();
 61             $item['Unterkategorie']=$sheet1->getCellByColumnAndRow(12,$i)->getValue();
 62             $item['Spezifikation']=$sheet1->getCellByColumnAndRow(13,$i)->getValue();
 63             $item['St_Einheit']=$sheet1->getCellByColumnAndRow(14,$i)->getValue();
 64             $item['SchichtaufPalette']=$sheet1->getCellByColumnAndRow(15,$i)->getValue();
 65             $item['Einheit_Palette']=$sheet1->getCellByColumnAndRow(16,$i)->getValue();
 66             $item['St_palette']=$sheet1->getCellByColumnAndRow(17,$i)->getValue();
 67             $item['Gewicht_netto']=$sheet1->getCellByColumnAndRow(18,$i)->getValue();
 68             $item['Gewicht_brutto']=$sheet1->getCellByColumnAndRow(19,$i)->getValue();
 69             $item['Gewicht_Palette']=$sheet1->getCellByColumnAndRow(20,$i)->getValue();
 70             $item['Steuersatz']=$sheet1->getCellByColumnAndRow(21,$i)->getValue();
 71             $item['Preis_brutto']=$sheet1->getCellByColumnAndRow(22,$i)->getValue();
 72             $item['Offizielle_Preis']=$sheet1->getCellByColumnAndRow(23,$i)->getValue();
 73             $item['Rabatt']=$sheet1->getCellByColumnAndRow(24,$i)->getValue();
 74             $item['Preis_netto']=$sheet1->getCellByColumnAndRow(25,$i)->getValue();
 75             $item['Preis1']=$sheet1->getCellByColumnAndRow(26,$i)->getValue();
 76             $item['Preis2']=$sheet1->getCellByColumnAndRow(27,$i)->getValue();
 77             $item['Preis3']=$sheet1->getCellByColumnAndRow(28,$i)->getValue();
 78             $item['Stock']=$sheet1->getCellByColumnAndRow(29,$i)->getValue();
 79             $item['Kosten_Transport2']=$sheet1->getCellByColumnAndRow(30,$i)->getValue();
 80             $item['Sonstige_Kosten']=$sheet1->getCellByColumnAndRow(31,$i)->getValue();
 81             $item['Gesamtkosten_netto']=$sheet1->getCellByColumnAndRow(32,$i)->getValue();
 82             $item['Bemerkung1']=$sheet1->getCellByColumnAndRow(33,$i)->getValue();
 83             $item['Bemerkung2']=$sheet1->getCellByColumnAndRow(34,$i)->getValue();
 84             $item['Bemerkung3']=$sheet1->getCellByColumnAndRow(35,$i)->getValue();
 85             $item['Bemerkung4']=$sheet1->getCellByColumnAndRow(36,$i)->getValue();
 86             $item['Bemerkung5']=$sheet1->getCellByColumnAndRow(37,$i)->getValue();
 87             $item['Bemerkung6']=$sheet1->getCellByColumnAndRow(38,$i)->getValue();
 88             $item['Bemerkung7']=$sheet1->getCellByColumnAndRow(39,$i)->getValue();
 89             $item['Bemerkung8']=$sheet1->getCellByColumnAndRow(40,$i)->getValue();
 90             $item['Bemerkung9']=$sheet1->getCellByColumnAndRow(41,$i)->getValue();
 91             $item['Bemerkung10']=$sheet1->getCellByColumnAndRow(42,$i)->getValue();
 92             $item['Kosten_Transport2']=$sheet1->getCellByColumnAndRow(43,$i)->getValue();
 93             $item['userid']='1';
 94             $item['addtime']=time();
 95             $data[]=$item;
 96         }
 97         $success=0;
 98         $error=0;
 99         $sum=count($data);
100         foreach($data as $k=>$v){
101             if(M('pro')->data($v)->add()){
102                 $success++;
103             }else{
104                 $error++;
105             }
106         }
107 
108         echo "<h3>总{$sum}条,成功{$success}条,失败{$error}条</h3>";
109         return array("error"=>0,'message'=>'import is succussful!');
110     }

注释已经标记的很详细了 再有啥问题 就直接问我吧。。 群84451248 加群备注 “博客园”

 

posted @ 2017-11-05 16:54  大白驴  阅读(1156)  评论(0编辑  收藏  举报