首先下载PHPExcel类。网上很多,自行下载。

然后把文件放到vendor文件里面。

一般引用vendor里面的类或者插件用vendor();

里面加载的就是vendor文件,然后想要加载哪个文件,直接写就行,中间的“.”相当于文件路径的“/”。

例如加载excel5这个文件:

先把html代码贴出来(整个导入导出的):

    <form enctype="multipart/form-data" method="post" id="form-admin-role-add"><div class="form-group col-sm-2"><input type="file" name="file_stu" /></div><div class="form-group col-sm-2"><input type="submit" value="导入" class="btn btn-w-m btn-primary btn-outline" /></div></form><div class="form-group col-sm-2"><a class="btn btn-w-m btn-primary btn-outline" href="{:url('EquipmentList/out')}">下载excel表格</a></div>

这里有个要注意的地方,我导入是做了异步的,导出不能做异步。

然后先放导入的方法吧:

//导入Excelpublic function into(){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) != "xlsx") {$this->error('不是Excel文件,重新上传');}/*设置上传路径*//*百度有些文章写的上传路径经过编译之后斜杠不对。不对的时候用大写的DS代替,然后用连接符链接就可以拼凑路径了。*/$savePath = ROOT_PATH . 'public' . DS . 'uploads' . DS;/*以时间来命名上传的文件*/$str = date('Ymdhis');$file_name = $str . "." . $file_type;/*是否上传成功*/if (!copy($tmp_file, $savePath . $file_name)) {$this->error('上传失败');}/**对上传的Excel数据进行处理生成编程数据,这个函数会在下面第三步的ExcelToArray类中*注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入*/require THINK_PATH.'library/think/ExcelToArrary.php';//导入excelToArray类//引入这个类试了百度出来的好几个方法都不行。最后简单粗暴的使用了require方式。这个类想放在哪里放在哪里。只要路径对就行。$ExcelToArrary = new ExcelToArrary();//实例化$res=$ExcelToArrary->read($savePath.$file_name,"UTF-8",$file_type);//传参,判断office2007还是office2003/*对生成的数组进行数据库的写入*/foreach ($res as $k => $v) {if ($k > 1) {$data[$k]['pname'] = $v[0];$data[$k]['access'] = $v[1];$data[$k]['jointime'] = time();}}//插入的操作最好放在循环外面$result = model('ProductAccess')->insertAll($data);if($result){return ['state'=>true, 'msg'=>'导入成功'];}else{return ['state'=>false, 'msg'=>'导入失败'];}}}

这里面有要引入ExcelToArray,代码如下:

<?php
namespace think;use PHPExcel_IOFactory;
use PHPExcel_Cell;
use PHPExcel;
/** * 读取Excel数据*/
class ExcelToArrary
{public function __construct() {//这些文件需要下载phpexcel,然后放在vendor文件里面。具体参考上一篇数据导出。vendor("PHPExcel.PHPExcel.PHPExcel");vendor("PHPExcel.PHPExcel.Writer.IWriter");vendor("PHPExcel.PHPExcel.Writer.Abstract");vendor("PHPExcel.PHPExcel.Writer.Excel5");vendor("PHPExcel.PHPExcel.Writer.Excel2007");vendor("PHPExcel.PHPExcel.IOFactory");}public function read($filename,$encode,$file_type){if(strtolower ( $file_type )=='xls')//判断excel表类型为2003还是2007
            {Vendor("Excel.PHPExcel.Reader.Excel5"); $objReader = PHPExcel_IOFactory::createReader('Excel5');$objReader = PHPExcel_IOFactory::createReader('Excel5');}elseif(strtolower ( $file_type )=='xlsx'){Vendor("Excel.PHPExcel.Reader.Excel2007"); $objReader = PHPExcel_IOFactory::createReader('Excel2007');}$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;}}

只要类都引入成功了,代码直接贴上去就能用了

这里改成你自己的。导入就完成啦。

然后就是导出。

//导出Excelpublic function out(){//导出$path = dirname(__FILE__); //找到当前脚本所在路径vendor("PHPExcel.PHPExcel.PHPExcel");vendor("PHPExcel.PHPExcel.Writer.IWriter");vendor("PHPExcel.PHPExcel.Writer.Abstract");vendor("PHPExcel.PHPExcel.Writer.Excel5");vendor("PHPExcel.PHPExcel.Writer.Excel2007");vendor("PHPExcel.PHPExcel.IOFactory");$objPHPExcel = new \PHPExcel();$objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);$objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);// 实例化完了之后就先把数据库里面的数据查出来$sql = model('ProductAccess')->select();// 设置表头信息$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', '机型')->setCellValue('B1', '机型编号')->setCellValue('C1', '生产日期');/*--------------开始从数据库提取信息插入Excel表中------------------*/$i=2;  //定义一个i变量,目的是在循环输出数据是控制行数$count = count($sql);  //计算有多少条数据for ($i = 2; $i <= $count+1; $i++) {$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $sql[$i-2]['pname']);$objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $sql[$i-2]['access']);$objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $sql[$i-2]['jointime']);}/*--------------下面是设置其他信息------------------*/$objPHPExcel->getActiveSheet()->setTitle('productaccess');      //设置sheet的名称$objPHPExcel->setActiveSheetIndex(0);                   //设置sheet的起始位置$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');   //通过PHPExcel_IOFactory的写函数将上面数据写出来$PHPWriter = \PHPExcel_IOFactory::createWriter( $objPHPExcel,"Excel2007");header('Content-Disposition: attachment;filename="设备列表.xlsx"');header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');$PHPWriter->save("php://output"); //表示在$path路径下面生成demo.xlsx文件
        }

这部分相应改成自己的就成了。

我做这个,遇到的问题也基本就是类引入不成功。只要都引入成功了。就改相应代码就OK了。

转载于:https://www.cnblogs.com/yayaa/p/8006919.html

thinkphp5 使用PHPExcel 导入导出相关推荐

  1. thinkphh5导入php文件,Thinkphp5.0如何导入导出

    ThinkPHP是一个免费开源的,快速.简单的面向对象的轻量级PHP 开发框架,遵循 Apache2 开源协议发布,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的.本篇文章我们主要跟大家分享Th ...

  2. 【PHP】【组件使用】【phpexcel】【phpexcel导入导出】

    [PHP][组件使用][phpexcel][phpexcel导入导出] 一.前提 PHP 7.3 tp3.2 tp5版本及以上的可能需要修改 二.phpexcel包引入 composer requir ...

  3. 黄聪:超实用的PHPExcel[导入][导出]实现方法总结

    首先需要去官网https://github.com/PHPOffice/PHPExcel/下载PHPExcel,下载后只需要Classes目录下的文件即可. 1.PHPExcel导出方法实现过程 /* ...

  4. PHPExcel导入导出常用方法总结

    最近公司后台管理系统需求,要用PHP导出excel表格数据,所以特整理了一下常用的方法供大家参考: PHPExcel扩展包地址:https://github.com/wanqianworld/phpe ...

  5. thinkphp6 + phpexcel 导入导出数据,设置特殊表格

    第一步:安装excel,使用composer安装,我的是在window下,直接cmd切换到项目下面,输入 composer require phpoffice/phpexcel,然后就等待安装完成.如 ...

  6. phpexcel导入导出(轻量) 淘宝导入

    excel单元格数字变成字符串方法 '1001010002400000,数值前加单引号 当excel文件中的数据设置过,导入的数据和excel显示的不同,单个修改数据个单元格格式又很麻烦,这时把exc ...

  7. PHPEXCEL 20万数据导入导出(一)

    本片博客记录了一次实际开发中的需要使用PHPExcel导入导出大量数据(20万)的解决过程. 复盘优化自己的项目,好处在于,一旦已找到好的方法,好的代码,你就不可能再使用差的代码 场景描述:开发环境: ...

  8. php Excel导入导出 , 及看及用

    phpExcel导入导出 1. 下载PHPExcel的SDK,下载地址: https://github.com/PHPOffice/PHPExcel 将SDK解压之后的Class文件拷贝到自己的项目. ...

  9. PHPExcel处理导入导出图片,链接

    PHPExcel是一个非常强大的PHP表格处理模块,提供一组PHP编程语言,它允许您编写和读取不同的电子表格文件格式,如Excel(纸). xls,Excel 2007(OfficeOpenXML). ...

最新文章

  1. R语言层次聚类:通过内平方和(Within Sum of Squares, WSS)选择最优的聚类K值、以内平方和(WSS)和K的关系并通过弯头法(elbow method)获得最优的聚类个数
  2. 《你必须知道的.NET》,蓄势待发;博客园开发者征途,又添新作
  3. WinXP的EFS加密文件如何解密?
  4. 搭建WeApacheb网站服务器
  5. 【Floyed】廉价最短路径
  6. voms下的反射大师_VOMS旧版
  7. ADO编程中ATL所遇到的定义问题
  8. Entity Framework加载相关实体——Explicit Loading
  9. python图像切面numpy_NumPy做图像处理不香吗?我用Python把秋日里最美的景色做成了这种效果~...
  10. 如何在TypeScript的`window`上显式设置新属性?
  11. Windows系统服务相关的端口
  12. 2018-2-13-win10-uwp-如何让WebView标识win10手机
  13. 机器视觉硬件之工业相机(一)
  14. 我是如何次次《头脑王者》获得满分的
  15. C/C++程序员简历
  16. Java Logging之JUL系列——Log Levels
  17. html中省略号怎么打,Web中的省略号
  18. HRZ学英语(类似尺取)
  19. 商人过河c语言编程,商人过河问题C语言源码.c
  20. 千万别删VS之ProgramData目录(血泪教训)

热门文章

  1. python入门基础知识教程-Python基础知识入门,这三个原则是你要知道的,还有教程...
  2. python主要用来开发什么-python主要用于什么开发
  3. python读取excel-Python Pandas读取修改excel操作攻略
  4. python自学步骤-小白刚入门Python,学完基础后,接下来的学习步骤!
  5. python小游戏编程实例-10分钟教你用Python写一个贪吃蛇小游戏,适合练手项目
  6. 怎样学好python-零基础如何学好Python?
  7. python的翻译-Python编写简单的谷歌翻译软件
  8. python填写excel-python读写Excel
  9. python1000个常用代码-介绍Python中几个常用的类方法
  10. c+和python先学哪个比较好-【编程先学什么好,c还是python】python教程c