thinkphp5中的excel表的导入导出

Wesley13
• 阅读 730

首先需要下载PHPExcel

PHPExcel下载地址:https://pan.baidu.com/s/1GjbcSXxHwbLeBw8NzzIBYA

提取码:zbqq

使用composer 命令(本人使用的方法,具体怎么下载,看你心情咯~~)

cmd命令进入项目的根目录->composer require phpoffice/phpexcel

thinkphp5中的excel表的导入导出

一、导出excel

控制器中引入类文件

thinkphp5中的excel表的导入导出

vendor ( 'PHPExcel' );vendor ( 'PHPExcel.PHPExcel_IOFactory' );vendor ( 'PHPExcel.PHPExcel_Cell' );控制器php代码

public function index()//EXCL表格的导出    {        $data = Db::table('score')->select();        $name = 'test';        $excel = new \PHPExcel(); //引用phpexcel        iconv('UTF-8', 'gb2312', $name); //针对中文名转码        $header = ['ID', 'sid', '语文', '数学', '英语', '政治', '学期']; //表头,名称可自定义        $excel->setActiveSheetIndex(0);        $excel->getActiveSheet()->setTitle($name); //设置表名        $excel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(18);        $excel->getActiveSheet()->getColumnDimension('B')->setWidth(80);        $letter = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];//列坐标//生成表头        for ($i = 0; $i < count($header); $i++) {            //设置表头值            $excel->getActiveSheet()->setCellValue("$letter[$i]1", $header[$i]);            //设置表头字体样式            $excel->getActiveSheet()->getStyle("$letter[$i]1")->getFont()->setName('宋体');            //设置表头字体大小            $excel->getActiveSheet()->getStyle("$letter[$i]1")->getFont()->setSize(14);            //设置表头字体是否加粗            $excel->getActiveSheet()->getStyle("$letter[$i]1")->getFont()->setBold(true);            //设置表头文字水平居中            $excel->getActiveSheet()->getStyle("$letter[$i]1")->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);            //设置文字上下居中            $excel->getActiveSheet()->getStyle($letter[$i])->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);            //设置单元格背景色            $excel->getActiveSheet()->getStyle("$letter[$i]1")->getFill()->getStartColor()->setARGB('FFFFFFFF');            $excel->getActiveSheet()->getStyle("$letter[$i]1")->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);            $excel->getActiveSheet()->getStyle("$letter[$i]1")->getFill()->getStartColor()->setARGB('FF6DBA43');            //设置字体颜色            $excel->getActiveSheet()->getStyle("$letter[$i]1")->getFont()->getColor()->setARGB('FFFFFFFF');        }        //写入数据        foreach ($data as $k => $v) {            //从第二行开始写入数据(第一行为表头)            $excel->getActiveSheet()->setCellValue('A' . ($k + 2), $v['id']);            $excel->getActiveSheet()->setCellValue('B' . ($k + 2), $v['sid']);            $excel->getActiveSheet()->setCellValue('C' . ($k + 2), $v['chinese']);            $excel->getActiveSheet()->setCellValue('D' . ($k + 2), $v['math']);            $excel->getActiveSheet()->setCellValue('E' . ($k + 2), $v['english']);            $excel->getActiveSheet()->setCellValue('F' . ($k + 2), $v['politics']);            $excel->getActiveSheet()->setCellValue('G' . ($k + 2), $v['xqid']);        }        //设置单元格边框        $excel->getActiveSheet()->getStyle("A1:E" . (count($data) + 1))->getBorders()->getAllBorders()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);//清理缓冲区,避免中文乱码        ob_end_clean();        header('Content-Type: application/vnd.ms-excel');        header('Content-Disposition: attachment;filename="' . $name . '.xls"');        header('Cache-Control: max-age=0');        //导出数据        $res_excel = \PHPExcel_IOFactory::createWriter($excel, 'Excel2007');        $res_excel->save('php://output');    }到此,已经可以导出excel了。二、excel导入首先还是引入相关的类文件

thinkphp5中的excel表的导入导出

vendor('PHPExcel.Writer.IWriter');vendor('PHPExcel.Writer.Abstract');vendor('PHPExcel.Writer.Excel5');vendor('PHPExcel.Writer.Excel2007');vendor('PHPExcel.IOFactory');前端excel上传页面

thinkphp5中的excel表的导入导出

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body><form  enctype="multipart/form-data" method="post" action="index3">    <input type="file" name="excel" /> <br>    <input type="submit" value="上传" /></form></body></html>//请忽略前端页面的样式,重点是功能,嘻嘻^_^将文件上传到index3控制器中index3的php代码

thinkphp5中的excel表的导入导出

public function index3(){

// 获取表单上传文件$file = request()->file('excel');// 移动到框架应用根目录/public/uploads/ 目录下if ($file) {    $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');    if ($info) {        $path = ROOT_PATH . 'public' . DS . 'uploads' . DS;        $filename = $info->getSaveName();        $file_path = $path . $filename;        $objPHPExcel = \PHPExcel_IOFactory::load($file_path);//读取上传的文件        $arr = $objPHPExcel->getSheet(0)->toArray();//获取其中的数据        $end=[];        array_shift($arr);//将从excel表中获取到的数组中的标题删除,只留下数据        foreach ($arr as $k=>$v){//将获取到的索引数组改为关联数组,方便操作            $len=count($arr);           for($i=0;$i<$len;$i++){               switch ($i){                   case 0:                       $end[$k]['id']=$v[$i];//将key改为自己数据库中存储的字段的名称                       break;                   case 1:                       $end[$k]['name']=$v[$i];                       break;                   case 2:                       $end[$k]['sex']=$v[$i];                       break;                   case 3:                       $end[$k]['age']=$v[$i];                       break;               }           }        }        echo "<pre>";        print_r($end);        exit;//excel中的数据已经得到了,剩余将数据插入数据库。请自行书写^_^..    } else {        echo $file->getError();    }  }}

以上代码本人亲测,导入。导出均可以实现。各位大佬对此有疑问的或者有更好的方法,感谢告知!!一起努力,共同进步。
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这