首页 > php教程 > php手册 > 正文

Thinkphp+phpexcel导出和导入

php中文网
发布: 2016-06-07 11:38:29
原创
1494人浏览过

在网上找了很多excel导出和导入示例,代码不是很简洁,很多出错,自己在excel方法和控制器改了下。
首先我们看下导出的HTML<a>导出</a>接着我们看下Index/excelExport 导出的PHP代码:$list = M("user")-&gt;field("id,username,password")-&gt;order("id DESC")-&gt;limit(50)-&gt;select(); <br> $title = array('ID', '用户名', '密码'); //设置要导出excel的表头 <br> exportExcel($list, '素材火', $title);exportExcel方法如下:function exportExcel($data, $savefile = null, $title = null, $sheetname = 'sheet1') { <br>     import("Org.Util.PHPExcel"); <br>     //若没有指定文件名则为当前时间戳 <br>     if (is_null($savefile)) { <br>         $savefile = time(); <br>     } <br>     //若指字了excel表头,则把表单追加到正文内容前面去 <br>     if (is_array($title)) { <br>         array_unshift($data, $title); <br>     } <br>     $objPHPExcel = new \PHPExcel(); <br>     //Excel内容 <br>     $head_num = count($data); <br>  <br>     foreach ($data as $k =&gt; $v) { <br>         $obj = $objPHPExcel-&gt;setActiveSheetIndex(0); <br>         $row = $k + 1; //行 <br>         $nn = 0; <br>  <br>         foreach ($v as $vv) { <br>             $col = chr(65 + $nn); //列 <br>             $obj-&gt;setCellValue($col . $row, $vv); //列,行,值 <br>             $nn++; <br>         } <br>     } <br>     //设置列头标题 <br>     for ($i = 0; $i          $alpha = chr(65 + $i); <br>         $objPHPExcel-&gt;getActiveSheet()-&gt;getColumnDimension($alpha)-&gt;setAutoSize(true); //单元宽度自适应  <br>         $objPHPExcel-&gt;getActiveSheet()-&gt;getStyle($alpha . '1')-&gt;getFont()-&gt;setName("Candara");  //设置字体 <br>         $objPHPExcel-&gt;getActiveSheet()-&gt;getStyle($alpha . '1')-&gt;getFont()-&gt;setSize(12);  //设置大小 <br>         $objPHPExcel-&gt;getActiveSheet()-&gt;getStyle($alpha . '1')-&gt;getFont()-&gt;getColor()-&gt;setARGB(PHPExcel_Style_Color::COLOR_BLACK); //设置颜色 <br>         $objPHPExcel-&gt;getActiveSheet()-&gt;getStyle($alpha . '1')-&gt;getAlignment()-&gt;setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //水平居中 <br>         $objPHPExcel-&gt;getActiveSheet()-&gt;getStyle($alpha . '1')-&gt;getAlignment()-&gt;setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //垂直居中 <br>         $objPHPExcel-&gt;getActiveSheet()-&gt;getStyle($alpha . '1')-&gt;getFont()-&gt;setBold(true); //加粗 <br>     } <br>  <br>     $objPHPExcel-&gt;getActiveSheet()-&gt;setTitle($sheetname); //题目 <br>     $objPHPExcel-&gt;setActiveSheetIndex(0); //设置当前的sheet   <br>     header('Content-Type: application/vnd.ms-excel'); <br>     header('Content-Disposition: attachment;filename="' . $savefile . '.xls"'); //文件名称 <br>     header('Cache-Control: max-age=0'); <br>     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); //Excel5 Excel2007 <br>     $objWriter-&gt;save('php://output'); <br> }接着我们看下导入的表单:<form> <br>     <div> <br>         <label>Excel表格:</label> <br>         <input> <br>     </div> <br>     <div> <br>         <input> <br>     </div> <br> </form>thinkphp上传Index/upload:$upload = new \Think\Upload(); // 实例化上传类 <br> $upload-&gt;maxSize = 3145728; // 设置附件上传大小 <br> $upload-&gt;exts = array('xls', 'xlsx'); // 设置附件上传类 <br> $upload-&gt;savePath = '/'; // 设置附件上传目录 <br> // 上传文件 <br> $info = $upload-&gt;uploadOne($_FILES['file']); <br> $filename = 'Uploads' . $info['savepath'] . $info['savename']; <br> $exts = $info['ext']; <br> if (!$info) {// 上传错误提示错误信息 <br>     $this-&gt;error($upload-&gt;getError()); <br> } else {// 上传成功 <br>     $this-&gt;goods_import($filename, $exts); <br> }goods_import导入方法:function goods_import($filename, $exts = 'xls') { <br>     //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入 <br>     import("Org.Util.PHPExcel"); <br>     //创建PHPExcel对象,注意,不能少了\ <br>     $PHPExcel = new \PHPExcel(); <br>     //如果excel文件后缀名为.xls,导入这个类 <br>  <br>     if ($exts == 'xls') { <br>         import("Org.Util.PHPExcel.Reader.Excel5"); <br>         $PHPReader = new \PHPExcel_Reader_Excel5(); <br>     } else if ($exts == 'xlsx') { <br>         import("Org.Util.PHPExcel.Reader.Excel2007"); <br>         $PHPReader = new \PHPExcel_Reader_Excel2007(); <br>     } <br>     //载入文件 <br>     $PHPExcel = $PHPReader-&gt;load($filename); <br>     //获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推 <br>     $currentSheet = $PHPExcel-&gt;getSheet(0); <br>     //获取总列数 <br>     $allColumn = $currentSheet-&gt;getHighestColumn(); <br>     //获取总行数 <br>     $allRow = $currentSheet-&gt;getHighestRow(); <br>     //循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始 <br>     for ($currentRow = 1; $currentRow          //从哪列开始,A表示第一列 <br>         for ($currentColumn = 'A'; $currentColumn              //数据坐标 <br>             $address = $currentColumn . $currentRow; <br>             //读取到的数据,保存到数组$arr中 <br>             $data[$currentRow][$currentColumn] = $currentSheet-&gt;getCell($address)-&gt;getValue(); <br>         } <br>     } <br>     $this-&gt;save_import($data); <br> }phpexcel导入和导出演示下载:http://www.sucaihuo.com/php/140.html

AD:真正免费,域名+虚机+企业邮箱=0元

WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号