Thinkphp扩展类一般都放在extend下

写导入导出的公共方法,方便再控制器中调用

导入excel文件/**

* 导入excel文件

* @param  string $file excel文件路径

* @return array        excel文件内容数组

*/

function import_excel($file){

// 判断文件是什么格式

$type = pathinfo($file);

$type = strtolower($type["extension"]);

$type=$type==='csv' ? $type : 'Excel5';

ini_set('max_execution_time', '0');

Loader::import('PHPExcel.PHPExcel');

// 判断使用哪种格式

$objReader = PHPExcel_IOFactory::createReader($type);

$objPHPExcel = $objReader->load($file);

$sheet = $objPHPExcel->getSheet(0);

// 取得总行数

$highestRow = $sheet->getHighestRow();

// 取得总列数

$highestColumn = $sheet->getHighestColumn();

//循环读取excel文件,读取一条,插入一条

$data=array();

//从第一行开始读取数据

for($j=1;$j<=$highestRow;$j++){

//从A列读取数据

for($k='A';$k<=$highestColumn;$k++){

// 读取单元格

$data[$j][]=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();

}

}

return $data;

}

数组转xls格式的excel文件/**

* 数组转xls格式的excel文件

* @param  array  $data      需要生成excel文件的数组

* @param  string $filename  生成的excel文件名

*      示例数据:

$data = array(

array(NULL, 2010, 2011, 2012),

array('Q1',   12,   15,   21),

array('Q2',   56,   73,   86),

array('Q3',   52,   61,   69),

array('Q4',   30,   32,    0),

);

*/

function create_xls($data,$filename='simple.xls'){

ini_set('max_execution_time', '0');

Loader::import('PHPExcel.PHPExcel');

$filename=str_replace('.xls', '', $filename).'.xls';

$phpexcel = new PHPExcel();

$phpexcel->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");

$phpexcel->getActiveSheet()->fromArray($data);

$phpexcel->getActiveSheet()->setTitle('Sheet1');

$phpexcel->setActiveSheetIndex(0);

header('Content-Type: application/vnd.ms-excel');

header("Content-Disposition: attachment;filename=$filename");

header('Cache-Control: max-age=0');

header('Cache-Control: max-age=1');

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($phpexcel, 'Excel5');

$objwriter->save('php://output');

exit;

}

数据转csv格式的excle/**

* 数据转csv格式的excle

* @param  array $data      需要转的数组

* @param  string $header   要生成的excel表头

* @param  string $filename 生成的excel文件名

*      示例数组:

$data = array(

'1,2,3,4,5',

'6,7,8,9,0',

'1,3,5,6,7'

);

$header='用户名,密码,头像,性别,手机号';

*/

function create_csv($data,$header=null,$filename='simple.csv'){

// 如果手动设置表头;则放在第一行

if (!is_null($header)) {

array_unshift($data, $header);

}

// 防止没有添加文件后缀

$filename=str_replace('.csv', '', $filename).'.csv';

ob_clean();

Header( "Content-type:  application/octet-stream ");

Header( "Accept-Ranges:  bytes ");

Header( "Content-Disposition:  attachment;  filename=".$filename);

foreach( $data as $k => $v){

// 如果是二维数组;转成一维

if (is_array($v)) {

$v=implode(',', $v);

}

// 替换掉换行

$v=preg_replace('/\s*/', '', $v);

// 解决导出的数字会显示成科学计数法的问题

$v=str_replace(',', "\t,", $v);

// 转成gbk以兼容office乱码的问题

echo iconv('UTF-8','GBK',$v)."\t\r\n";

}

}

使用示例:

导入原理:

将要导入的文件先通过Thinkphp方法上传到服务器,再根据上传后的路径去调用公共导入方法,传入要导入的excel的文件路径,如下public function importUser(){

$data=import_excel('./a.xls');

print_r($data);

exit;

}

PHP博客导入导出,Thinkphp5.0导入导出详解相关推荐

  1. 初出茅庐的小李第3篇博客《5G物联网及NB-IoT技术详解》读书笔记1

    初出茅庐的小李第3篇博客 <5G物联网及NB-IoT技术详解>读书笔记1 在Mculover666那里白嫖了一本书,不要问我咋白嫖的,我也不知道- 为什么要写这样的笔记? 因为我白嫖的时候 ...

  2. python中json模块博客园_Python中的Json模块详解

    Python中的Json模块详解 Json(JavaScript Object Notation)它是一种轻量级的数据交换格式,具有数据格式简单,读写方便易懂等很多优点.许多主流的编程语言都在用它来进 ...

  3. 博客新功能上线,可导出PDF……【2021.12.14】

    hello,大家好,这里是「CSDN产品周报」第21期.本次更新主要涉及首页榜单.博客.问答,具体细节请往下看. 一.CSDN榜单优化 1.排行榜导航栏从右侧移动到左侧 2.新增「原力月榜」,选取全站 ...

  4. jmeter 导入java,JMeter导入自定义的Jar包的详解教程

    1.简介 原计划这一篇是介绍前置处理器的基础知识的,结果由于许多小伙伴或者童鞋们在微信和博客园的短消息中留言问如何引入自己定义的Jar包呢???我一一回复告诉他们和引入插件的Jar包一样的道理,一通百 ...

  5. golang导入git包_使用go module导入本地包的方法教程详解

    go module 是Go1.11版本之后官方推出的版本管理工具,并且从 Go1.13 版本开始, go module 将是Go语言默认的依赖管理工具.到今天 Go1.14 版本推出之后 Go mod ...

  6. go语言导入git包_使用go module导入本地包的方法教程详解

    go module 是Go1.11版本之后官方推出的版本管理工具,并且从 Go1.13 版本开始, go module 将是Go语言默认的依赖管理工具.到今天 Go1.14 版本推出之后 Go mod ...

  7. mysql 批量导入sql_MySQL高效导入多个.sql文件方法详解

    MySQL有多种方法导入多个.sql文件(里面是sql语句),常用的有两个命令:mysql和source. 但是这两个命令的导入效率差别很大,具体请看最后的比较. (还有sqlimport和LOAD ...

  8. Oracle Golden Gate 11.2.0.3安装详解

    Oracle Golden Gate 11.2.0.3安装详解 环境 环境变量 安装OGG软件 开始OGG配置 配置源端数据库 源端OGG配置 配置目标端数据库 目标端OGG配置 开启同步 环境 ce ...

  9. Zabbix5.0监控系统安装详解

    Zabbix5.0监控系统安装详解 一.Zabbix介绍 二.Zbbix的LAMP环境安装 1.防火墙和SElinux配置 2.安装LAMP环境 三.安装Zabbix软件 四.Zabbix的Mysql ...

最新文章

  1. CSS动画:有活力的链接下划线
  2. u盘插在电脑上灯亮没有反应_u盘插入电脑无反应怎么解决 u盘插入电脑无反应解决方法【步骤介绍】...
  3. Vue脚手架组件开发常见问题
  4. 【单目标优化求解】基于matlab粒子群混沌混合蝴蝶优化算法求解最优目标问题(HPSOBOA)【含Matlab源码 1538期】
  5. Oracle数据库的安装及使用教程
  6. 软件测试电脑内存适配,利用Memtest86 测试你电脑的内存
  7. linux日志关键词高亮,【转载】Linux使用tailf高亮显示关键字
  8. Video.js - HTML5 视频播放器
  9. 如何利用无线远传模块实现工业无线控制系统?
  10. 搭建vue脚手架(vue-cli)--基于vue2.0版本
  11. 图像增强(1-灰度级变换)—内涵MATLAB源码
  12. 综述:环境中的噬菌体宿主互作
  13. 目前主流的几种数字视频压缩编解码标准(转载)
  14. 使用 VS2013 Update 4 编译 Scylla 0.9.8
  15. python 标贝 模拟人声/语音克隆/语音复刻(API)体验
  16. python时间函数纳秒_python – 获取纳秒级精度的文件修改时间
  17. vector<vector>排序
  18. 小程序云开发中的一些注意点与Error: errCode: -404011 cloud function execution error | errMsg: clou----错误
  19. python数据分析6:双色球 使用线性回归算法预测下期中奖结果
  20. CodeForces Round #730 D1. RPD and Rap Sheet (Easy Version)题解

热门文章

  1. 理解了这三点,才敢说自己会写Python代码
  2. 从“卡脖子”到“主导”,国产数据库 40 年的演变!
  3. 不要再被Python洗脑了!!
  4. 全球 IPv4 地址消耗殆尽,苹果主力推进 IPv6
  5. 释放低代码小宇宙,微软 Power Platform 震撼来袭!
  6. IEEE 回应禁止华为系审稿人;Wi-Fi 联盟等恢复华为成员资格;Angular 8 正式发布 | 极客头条...
  7. 苹果:失了 5G 会何妨?
  8. 李彦宏回应百度落后:我们擅长技术含量高的
  9. 漫画:从打牌到 map-reduce 工作原理解析
  10. 历经外企、创业公司、大厂的程序员告诉你:第一份工作有多重要!