ThinkPHP5调用PHPExcel类实现导入导出
注意: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类实现导入导出的更多相关文章
- java中通过jacob调用dts进行数据导入导出
在一个项目中需要金蝶软件对接,但是业务服务器和财务服务器相隔很远(中间经过好几台服务器,有内网也有外网),从一个内网向另一个内网中传输时,需要外网辅助,因为不让原始数据受污染,使用了DTS数据同步到另 ...
- ThinkPHP3.2.3使用PHPExcel类操作excel导出excel
如何导入excel请看:ThinkPHP3.2.3使用PHPExcel类操作excel导入读取excel // 引入PHPExcel类 import("Org.Util.PHPExccel& ...
- yii2.0 利用Excel类做导入导出
1.在 common 目录下 创建一个 components 将 Classes目录(改名为PHPExcel)和PHPExcel.php 放在新创建的目录下.再在 components 下创建一个Co ...
- PHPExcel导入导出 若在thinkPHP3.2中使用(无论实例还是静态调用(如new classname或classname::function)都必须加反斜杠,因3.2就命名空间,如/classname
php利用PHPExcel类导出导入Excel用法 来源: 时间:2013-09-05 19:26:56 阅读数: 分享到: 16 [导读] PHPExcel类是php一个excel表格处理插 ...
- php利用PHPExcel类导出导入Excel用法
PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考(PHPExcel自己百度下载这里不介 ...
- excel的导入导出的实现
1.创建Book类,并编写set方法和get方法 package com.bean; public class Book { private int id; private String name; ...
- 利用反射实现通用的excel导入导出
如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 package com.bean; p ...
- CRUD全栈式编程架构之导入导出的设计
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- Django-xadmin+django-import-export导入导出的实现
转载自:https://blog.csdn.net/zcyuefan/article/details/77748850 1. 需求vs现状1.1 需求要求做一个ERP后台辅助管理的程序,有以下几项基本 ...
随机推荐
- Mysql5.6 for Centos6.5源码编译安装
## 说明 不同服务器需要改变 server_id ,同一台机器上需要改变 port 1. 关闭防火墙[root@mysql ~]# service iptables status --查看防火墙状态 ...
- Web 前端面试小知识
简历投递 前期为了解自身短板, 可以海投一些试试. 不建议长期海投简历, 对用人单位简历筛选和你自身都没什么好处. 投简历之前最起码要关注以下几点(薪资范围, 公司位置, 职位要求, 是否为培训机构冒 ...
- MySQL 建表语句 create table 中的列定义
MySQL 建表语句 create table 中的列定义: column_definition: data_type [NOT NULL | NULL] [DEFAULT default_value ...
- TypeScript 之 基础类型、高级类型
基础类型:https://m.runoob.com/manual/gitbook/TypeScript/_book/doc/handbook/Basic%20Types.html 高级类型:https ...
- python2核心类库:urllib、urllib2的区别和使用
urllib/urllib2都是接受URL请求的相关模块区别:1.urllib2可以接受一个Request类的实例来设置URL请求的headers,urllib仅可以接受URL.这意味着,你不可以伪装 ...
- EXT4 超级块介绍(转)
https://blog.csdn.net/sunlei0625/article/details/79011946 The superblock records various information ...
- ElasticSearch停止启动
1.查找ES进程 ps -ef | grep elastic 2.杀掉ES进程 kill -9 2382(进程号) 3.重启ES sh elasticsearch -d 注意:elasticsearc ...
- Xilinx AXI总线学习(1)
Xilinx AXI总线学习 1. AXI GPIO 采用的是AXI4-Lite接口 AXI GPIO Block Diagram Block design: 端口描述: AXI GPIO核有哪些寄存 ...
- padding margin
padding:内边距 margin:外边距 内外边距是针对本标签相对于它相邻的标签而言. margin: 10px;是本标签与它周围上下左右有10像素的空白. padding: 10px;本标签其实 ...
- esp8266尝鲜
请将当前用户添加到dialout组,否则会提示打开/dev/ttyUSB0权限不足 sudo usermod -a -G dialout `whoami` dmeg查看驱动安装信息 dmesg | g ...