侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例

ThinkPHP  /  管理员 发布于 8年前   249

本文所述实例是使用在Thinkphp的开发框架上,要是使用在其他框架也是同样的方法,很多人可能不能正确的实现Excel的导入导出,问题基本上都是phpExcel的核心类引用路径出错造成的,如果有问题大家务必要对路劲是否引用正确进行测试。

具体操作步骤如下:

(一)导入Excel

第一,在前台html页面进行上传文件:如:

导入Excel表:

第二,在对应的php文件进行文件的处理

 if (! empty ( $_FILES ['file_stu'] ['name'] ))  { $tmp_file = $_FILES ['file_stu'] ['tmp_name']; $file_types = explode ( ".", $_FILES ['file_stu'] ['name'] ); $file_type = $file_types [count ( $file_types ) - 1];  /*判别是不是.xls文件,判别是不是excel文件*/  if (strtolower ( $file_type ) != "xls")     {   $this->error ( '不是Excel文件,重新上传' );  } /*设置上传路径*/  $savePath = SITE_PATH . '/public/upfile/Excel/'; /*以时间来命名上传的文件*/  $str = date ( 'Ymdhis' );   $file_name = $str . "." . $file_type;  /*是否上传成功*/  if (! copy ( $tmp_file, $savePath . $file_name ))   {   $this->error ( '上传失败' );  } /*  *对上传的Excel数据进行处理生成编程数据,这个函数会在下面第三步的ExcelToArray类中  注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入 */ $res = Service ( 'ExcelToArray' )->read ( $savePath . $file_name ); /*  重要代码 解决Thinkphp M、D方法不能调用的问题   如果在thinkphp中遇到M 、D方法失效时就加入下面一句代码 */ //spl_autoload_register ( array ('Think', 'autoload' ) ); /*对生成的数组进行数据库的写入*/ foreach ( $res as $k => $v )  {  if ($k != 0)   {   $data ['uid'] = $v [0];   $data ['password'] = sha1 ( '111111' );   $data ['email'] = $v [1];   $data ['uname'] = $v [3];   $data ['institute'] = $v [4];   $result = M ( 'user' )->add ( $data );   if (! $result)    {    $this->error ( '导入数据库失败' );   }  } }}

第三:ExcelToArrary类,用来引用phpExcel并处理Excel数据的
此处注意:ExcelToArrary类建在根目录下的 addons /services/ExcelToArrary.class.php中

class ExcelToArrary extends Service{ public function __construct() {  /*导入phpExcel核心类 注意 :你的路径跟我不一样就不能直接复制*/  include_once('./Excel/PHPExcel.php'); }/*** 读取excel $filename 路径文件名 $encode 返回数据的编码 默认为utf8*以下基本都不要修改*/ public function read($filename,$encode='utf-8'){   $objReader = PHPExcel_IOFactory::createReader('Excel5');    $objReader->setReadDataOnly(true);    $objPHPExcel = $objReader->load($filename);    $objWorksheet = $objPHPExcel->getActiveSheet();     $highestRow = $objWorksheet->getHighestRow();     $highestColumn = $objWorksheet->getHighestColumn();    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);     $excelData = array();     for ($row = 1; $row <= $highestRow; $row++) {     for ($col = 0; $col < $highestColumnIndex; $col++) {      $excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();   }    }   return $excelData;  }   }

第四,以上就是导入的全部内容,phpExcel包附在最后。

(二)Excel的导出(相对于导入简单多了)

第一,先查出数据库里面要生成Excel的数据,如:

$data= M('User')->findAll(); //查出数据$name='Excelfile'; //生成的Excel文件文件名$res=service('ExcelToArrary')->push($data,$name);

第二,ExcelToArrary类,用来引用phpExcel并处理数据的   

class ExcelToArrary extends Service{public function __construct() {  /*导入phpExcel核心类 注意 :你的路径跟我不一样就不能直接复制*/  include_once('./Excel/PHPExcel.php');}/* 导出excel函数*/public function push($data,$name='Excel'){ error_reporting(E_ALL); date_default_timezone_set('Europe/London'); $objPHPExcel = new PHPExcel();/*以下是一些设置 ,什么作者 标题啊之类的*/ $objPHPExcel->getProperties()->setCreator("转弯的阳光")   ->setLastModifiedBy("转弯的阳光")   ->setTitle("数据EXCEL导出")   ->setSubject("数据EXCEL导出")   ->setDescription("备份数据")   ->setKeywords("excel")  ->setCategory("result file"); /*以下就是对处理Excel里的数据, 横着取数据,主要是这一步,其他基本都不要改*/foreach($data as $k => $v){  $num=$k+1;  $objPHPExcel->setActiveSheetIndex(0) //Excel的第A列,uid是你查出数组的键值,下面以此类推 ->setCellValue('A'.$num, $v['uid'])  ->setCellValue('B'.$num, $v['email']) ->setCellValue('C'.$num, $v['password']) } $objPHPExcel->getActiveSheet()->setTitle('User'); $objPHPExcel->setActiveSheetIndex(0);  header('Content-Type: application/vnd.ms-excel');  header('Content-Disposition: attachment;filename="'.$name.'.xls"');  header('Cache-Control: max-age=0');  $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');  $objWriter->save('php://output');  exit;}

第三,以上就是导出的全部内容,phpExcel本站下载地址codes/194070.html

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

您可能感兴趣的文章:

  • 利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
  • PHPExcel读取Excel文件的实现代码
  • phpExcel中文帮助手册之常用功能指南
  • PHP导入Excel到MySQL的方法
  • 基于PHP导出Excel的小经验 完美解决乱码问题
  • php读取EXCEL文件 php excelreader读取excel文件
  • php导入导出excel实例
  • php中使用PHPExcel读写excel(xls)文件的方法
  • php生成excel文件的简单方法
  • PHP中创建和编辑Excel表格的方法


  • 上一条:
    ThinkPHP实现将SESSION存入MYSQL的方法
    下一条:
    ThinkPHP权限认证Auth实例详解
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • thinkphp + mongodb项目中数据加载慢问题分析及解决(0个评论)
    • thinkphp6框架中封装redis操作类(0个评论)
    • thinkphp6框架中实现定时任务功能流程步骤(0个评论)
    • Thinkphp5.1框架中实现Session+Redis会话共享流程步骤(0个评论)
    • TP5框架版本5.0.10安全漏洞根据官方补丁修复,也是本站安全漏洞修复(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-12
    • 2018-01
    • 2018-02
    • 2020-03
    • 2021-07
    • 2021-12
    • 2022-05
    • 2022-06
    • 2022-09
    • 2023-01
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客