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 加群备注 “博客园”