thinkphp PHPexcel 导入导出的

来源:互联网 发布:淘宝怎么看行业转化率 编辑:程序博客网 时间:2024/05/16 13:54

thinkphp  框架用的不太多,也没怎么接触过PHPExcel,但是工作中需要用到PHPExcel 来进行导入数据 与导出数据。

于是就学习了下关于thinkphp与PHPExcel的整合。

百度,谷歌 上 资料很多 我也查了许多 ,然后 把我学到的知识分享下

可从官网上下载PHPExcel

http://phpexcel.codeplex.com/releases/view/119187

放在对应ThinkPHP里面 如下图  Vendor 是对应第三方资源库

    


可用vendor("PHPExcel.PHPExcel");加载第三方资源 





vender,import为thinkphp的原生态函数 

从上面代码可以看出 

用vendor("PHPExcel.PHPExcel"); 调用时  

        $baseUrl = VENDOR_PATH; //这里已经定义了 ThinkPHP\Library\Vendor对应的路径

在import函数里面 会将PHPExcel.PHPExce = 》PHPExcel/PHPExce 

最终引入的时候 会变成 

require D:\192.168.0.73\BigAnt5x_WebSys\www_demo\ThinkPHP\Library\Vendor\PHPExcel/PHPExce.php;


如果我引入其他的一个文件 如下



那我引入的是时候 可以用

vendor("WxpayController#class"); //import函数的是 将 #换成了 .

也可以用
import("WxpayController#class,VENDOR_PATH);  



说了 半天就讲了 导入PHPExcel 。。。。

接下来进入正题!!

先贴上代码

function sp_excle2array($file){vendor("PHPExcel.PHPExcel");vendor("PHPExcel.PHPExcel.IOFactory");$objPHPExcel = PHPExcel_IOFactory::load($file);//用这个去解析一个对应excel文件/**读取excel文件中的第一个工作表*/$currentSheet = $objPHPExcel->getSheet(0);/**取得最大的列号*/$allColumn = $currentSheet->getHighestColumn();/**取得一共有多少行*/$allRow = $currentSheet->getHighestRow();for ($currentRow = 1;$currentRow<=$allRow;$currentRow++){for($currentColumn = "A";$currentColumn<=$allColumn;$currentColumn++){  $address = $currentColumn . $currentRow;             // 数据坐标               $ExlDataUser[] = $currentSheet->getCell($address)->getValue();// 读取到的数据,保存到数组$arr中               //echo $currentSheet->getCell($address)->getValue() ."<br/>";}$ExlDataAll[] = $ExlDataUser;unset($ExlDataUser);}return $ExlDataAll;}


根据需要 可以从相应excel位置获取值 


/** * 数组  转 excel * @param unknown $file * @return mixed */function sp_array2excel($data,$file = '',$filePreName = ''){if ($file == ''){$d = getdate() ;$file = $d[0] ;if ($filePreName) $file = $filePreName . '_' . $file ;}//文件名$outputFileName = $file .'.xls';//文件路径$file = './data/export/'. $file .'.xls' ;//var_dump($file);var_dump($outputFileName);die();vendor("PHPExcel.PHPExcel");$objPHPExcel = new PHPExcel();$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);/* 设置当前的sheet */$objPHPExcel->setActiveSheetIndex(0);$objActSheet = $objPHPExcel->getActiveSheet();//设置自适应宽度$N = 'A';for ($M=0;$M<count($data[0]);$M++){$objPHPExcel->getActiveSheet()->getColumnDimension($N)->setAutoSize(true);$N++;}//填充数据$i = 1;foreach($data as $value){/* excel文件内容 */$j = 'A';foreach($value as $value2){ //            $value2=iconv("gbk","utf-8",$value2);$objActSheet->setCellValue($j.$i,$value2);$j++;}$i++;}//生成excel文件ob_end_clean();  //清空缓存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="'.$outputFileName.'"');header("Content-Transfer-Encoding:binary");//$objWriter->save(“”php://output“”);$objWriter->save($file);$file = str_replace("./", "/", $file);return $file ;}


根据数组生成一个excel文件(save($file)) 或者直接输出出来(save(“”php://output“”);)


0 0