注意:extend是放置第三方类的地方,不要乱配置命名空间那些,引起不必要的类错误

代码如下

<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
use think\Loader;
use think\Request;
//use lib\PExcel; class Four extends Controller
{
//上传页面展示
public function index(){
return view();
} //实现excel的导入操作
public function uploadExcel(){
// //接收文件
// $file = request()->file('excel');
// $info = $file->validate(['size'=>3145728,'ext'=>'xlsx,xls,csv'])->move(ROOT_PATH . 'public' . DS . 'static' . DS . 'excels');
// if($info){
// $excel_path = ROOT_PATH.'public'.DS.'static'.DS."excels".DS.$info->getSaveName();
// }else{
// $excel_path = null;
// }
//防止乱码
ini_set('memory_limit', '1024M');//设置php允许的文件大小最大值
Loader::import('PHPExcel.Classes.PHPExcel');//必须手动导入,否则会报PHPExcel类找不到
header("Content-type:text/html;charset=utf-8");
//接收文件
$file = $_FILES['excel'];
$extension = strtolower( pathinfo($file['name'], PATHINFO_EXTENSION) );
//实例化主文件
$phpExcel = new \PHPExcel();
//创建读入器
if($extension=='xlsx'){
$objRender = \PHPExcel_IOFactory::createReader('excel2007');
}else{
$objRender = \PHPExcel_IOFactory::createReader('Excel5');
}
//读取excel文件
$ExcelObj = $objRender->load($file['tmp_name']);
//查看有几个sheet
$sheetContent = $ExcelObj->getSheet(0)->toArray();
unset($sheetContent[0]);
//取出文件的内容描述信息
//$sheetColumn = $objRender->listWorksheetInfo($file['tmp_name']);
foreach ($sheetContent as $k => $v){
$arr['uname'] = $v[0];
$arr['sex'] = $v[1];
$arr['age'] = $v[2];
$arr['class_name'] = $v[3];
$res[] = $arr;
} if(Db::name('excel_upload')->insertAll($res)){
$this->success("导入成功");
}else{
$this->error("导入失败");
}
//echo $sheetColumn[0]['totalColumns'];die;
} /************************************************************************************/
//实现excel的导出操作
public function excel_download(){
ini_set('memory_limit', '1024M');//设置php允许的文件大小最大值
Loader::import('PHPExcel.Classes.PHPExcel');//必须手动导入,否则会报PHPExcel类找不到
$data = Db::table("excel_upload")->select();
//实例化excel(相当于创建了一个excel)
$objPHPExcel = new \PHPExcel();
//获得当前活动的sheet
$objSheet = $objPHPExcel->getActiveSheet();
//给当前的sheet修改名称
$objSheet->setTitle("测试数据导出");
//设置单元格垂直居中、水平居中
$objSheet->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER)->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//设置单元格格式范围的字体、字体大小、加粗
$objSheet->getStyle("A1:Z1")->getFont()->setName("微软雅黑")->setSize(10)->setBold(true);
//给单元格填充背景色
$objSheet->getStyle("A1:Z1")->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setARGB('#00FF00');
//填充边框
$styleArray = [
'borders'=>[
'outline'=>[
'style'=>\PHPExcel_Style_Border::BORDER_THICK,
'color' => ['argb' => '#F0F8FF'],
],
],
]; //填充样式
$objSheet->getStyle("A1")->applyFromArray($styleArray);
$objSheet->getStyle("B1")->applyFromArray($styleArray);
$objSheet->getStyle("C1")->applyFromArray($styleArray);
$objSheet->getStyle("D1")->applyFromArray($styleArray);
$objSheet->getStyle("E1")->applyFromArray($styleArray); //填充数据
$objSheet->setCellValue("A1","ID")
->setCellValue("B1","姓名")
->setCellValue("C1","性别")
->setCellValue("D1","年龄")
->setCellValue("E1","班级"); //到这里第一行就被占用了,所以要从第二行开始循环
$j = 2;
foreach ($data as $k => $v){
$objSheet->setCellValue("A".$j,$v['id'])
->setCellValue("B".$j,$v['uname'])
->setCellValue("C".$j,$v['sex'])
->setCellValue("D".$j,$v['age'])
->setCellValue("E".$j,$v['class_name']);
$j++;
} // header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
// header('Content-Disposition: attachment;filename="' . date('Ymd') . '.xlsx"');
// header('Cache-Control: max-age=0');
//// If you're serving to IE 9, then the following may be needed
// header('Cache-Control: max-age=1');
//// If you're serving to IE over SSL, then the following may be needed
// header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
// header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
// header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
// header('Pragma: public'); // HTTP/1.0
// $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
// $objWriter->save('php://output'); // exit; //设置文件保存的命名、编码、同时开放保存路径的权限
//命名
$file_name = "上海软工专业高级成材率汇总 ".date("Y-m-d",time()).".xlsx";
//编码
header('Content-Type:application/vnd.ms-excel;charset=utf-8');
//告诉浏览器要输出的名称
header("Content-Disposition:attachment;filename=$file_name");
//禁止浏览器缓存
header('Cache-Control:max-age=0');
//生成excel文件
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');
//彻底开放保存路径
$objWriter->save('php://output');
exit();
} public function te(){
$a = "
<table>
<thead>
<tr>
<th style='color: #ffb454'>adsf</th>
<th>中文</th>
</tr>
</thead>
<tbody>
<tr>
<td>123</td>
<td>123</td>
</tr>
</tbody>
</table>
"; $a = "\xEF\xBB\xBF" . $a;
$filename = date('Ymd').'.xls'; //设置文件名
header( "Content-Type: application/vnd.ms-excel; name='excel'" ); header( "Content-type: application/octet-stream" ); header( "Content-Disposition: attachment; filename=".$filename ); //header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
//
//header( "Pragma: no-cache" );
//
//header( "Expires: 0" ); exit( $a );
} public function ttt(){
ini_set('memory_limit', '1024M');//设置php允许的文件大小最大值
Loader::import('PHPExcel.Classes.PHPExcel');//必须手动导入,否则会报PHPExcel类找不到
$objPHPExcel = new \PHPExcel();
$worksheet = $objPHPExcel->getActiveSheet();
$objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
// Set document properties
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
->setLastModifiedBy("Maarten Balliauw")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("Test result file");
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', '昵称')
->setCellValue('B1', '链接')
->setCellValue('C1', '房间号')
->setCellValue('D1', '分组');
// Rename worksheet
$objPHPExcel->getActiveSheet()->setTitle('Simple');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . date('Ymd') . '.xlsx"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');
// If you're serving to IE over SSL, then the following may be needed
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header('Pragma: public'); // HTTP/1.0
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output'); exit;
}
}

重点看前两个方法

uploadExcel  
excel_download

引自:小郭同志:https://www.cnblogs.com/hopelooking/default.html?page=1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
相信自己,终会成功!

ThinkPHP5调用PHPExcel类实现导入导出的更多相关文章

  1. java中通过jacob调用dts进行数据导入导出

    在一个项目中需要金蝶软件对接,但是业务服务器和财务服务器相隔很远(中间经过好几台服务器,有内网也有外网),从一个内网向另一个内网中传输时,需要外网辅助,因为不让原始数据受污染,使用了DTS数据同步到另 ...

  2. ThinkPHP3.2.3使用PHPExcel类操作excel导出excel

    如何导入excel请看:ThinkPHP3.2.3使用PHPExcel类操作excel导入读取excel // 引入PHPExcel类 import("Org.Util.PHPExccel& ...

  3. yii2.0 利用Excel类做导入导出

    1.在 common 目录下 创建一个 components 将 Classes目录(改名为PHPExcel)和PHPExcel.php 放在新创建的目录下.再在 components 下创建一个Co ...

  4. PHPExcel导入导出 若在thinkPHP3.2中使用(无论实例还是静态调用(如new classname或classname::function)都必须加反斜杠,因3.2就命名空间,如/classname

    php利用PHPExcel类导出导入Excel用法 来源:   时间:2013-09-05 19:26:56   阅读数: 分享到: 16 [导读] PHPExcel类是php一个excel表格处理插 ...

  5. php利用PHPExcel类导出导入Excel用法

    PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考(PHPExcel自己百度下载这里不介 ...

  6. excel的导入导出的实现

    1.创建Book类,并编写set方法和get方法 package com.bean; public class Book { private int id; private String name; ...

  7. 利用反射实现通用的excel导入导出

    如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 package com.bean; p ...

  8. CRUD全栈式编程架构之导入导出的设计

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  9. Django-xadmin+django-import-export导入导出的实现

    转载自:https://blog.csdn.net/zcyuefan/article/details/77748850 1. 需求vs现状1.1 需求要求做一个ERP后台辅助管理的程序,有以下几项基本 ...

随机推荐

  1. Redis sortedset有效集合数据结构

    1. 增加一个有效集合 2. 查看元素个数 3. zscore 4. zcount 5. 返回指定元素的索引 zrank 6.zincrby 给元素a加90分 7. zrange查看范围

  2. Hadoop HDFS 文件块大小

    HDFS 文件块大小 HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M,老版本中是64M ...

  3. cocos 3.16 生成预编译库模板

    打开模板功能 不知道什么原因,cocos 3.16关闭了模板功能,因此使用cocos -h命令时,无法显示gen-templates参数. 打开的方式也挺简单,打开tools/cocos2d-cons ...

  4. Application Request Route实现IIS Server Farms集群负载

    首先你装一个web 平台安装程序:https://www.microsoft.com/zh-CN/download/details.aspx?id=6164 安装完之后会出现打开界面,iis中也可找到 ...

  5. PHP扩展开发:第一个扩展

    在上一篇文章<PHP扩展开发:安装PHP>我们已经将开发PHP扩展的PHP环境安装成功,那么接下来采用最简单直接的方式创建第一个扩展. 我们先假设业务场景,是需要有这么一个扩展,提供一个叫 ...

  6. Python标示符和关键字

    标示符 什么是标示符,看下图: 标识符就是开发人员在程序中自定义的一些符号和名称. 标示符是自己定义的,如变量名 .函数名等. 标示符的规则 标示符由字母.下划线和数字组成,且数字不能开头 pytho ...

  7. Oracle 字符集更改

    sqlplus sys/player as sysdba SQL*Plus: Release 11.2.0.1.0 Production shutdown immediate; startup mou ...

  8. 【SpringMVC】文件上传Expected MultipartHttpServletRequest: is a MultipartResolver错误解决

    本文转载自:https://blog.csdn.net/lzgs_4/article/details/50465617 使用SpringMVC实现文件上传时,后台使用了 MultipartFile类, ...

  9. Mongodb安装超长等待

    最近安装了一下mongodb最新版3.6下载各个版本安装都是停在installing MongoDB Compass位置,网上看到说可以等段时间之类的发现等了1个晚上居然还没成功,取消安装也不行. 于 ...

  10. ubuntu16.04 彻底卸载MySQL

    以MySQL- 5.7.18为例: sudo apt-get autoremove --purge mysql-server-5.7 #sudo apt-get remove mysql-server ...