PHPExcel集成对数据导入和导出
<?php
/**
* Created by PhpStorm.
* User: admin
* Date: 2017/8/15
* Time: 9:07
*/
class User extends CI_Controller {
public function __construct(){
parent::__construct();
$this->load->database();
}
public function index(){
$this->load->view('head');
$this->load->view('admin/user/upload');
$this->load->view('footer');
}
public function export(){
$this->load->library('PHPExcel');
$objPHPExcel=new PHPExcel();
$sql="select id,username,password,email,mobile,create_time from user";
$query=$this->db->query($sql);
$data=$query->result_array();
$objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,"Excel2007");
//设置excel的属性:
//合并单元格
$objPHPExcel->getActiveSheet()->mergeCells('A1:F1');
$objPHPExcel->getActiveSheet()->mergeCells('A2:F2');
//设置表头行高
$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(35);
$objPHPExcel->getActiveSheet()->getRowDimension(2)->setRowHeight(25);
//设置font
$objPHPExcel->getActiveSheet()->getStyle('A:F')->getFont()->setName('Microsoft YaHei UI');
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(16);
$objPHPExcel->getActiveSheet()->getStyle('A2')->getFont()->setSize(14);
$objPHPExcel->getActiveSheet()->getStyle('A:F')->getFont()->setSize(12);
//设置默认行高
$objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(20);
//设置列宽
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(8);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(35);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(45);
//设置表头对齐方式
$objPHPExcel->getActiveSheet()->getStyle('A1:A2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('A1:A2')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
//设置水平左对齐
$objPHPExcel->getActiveSheet()->getStyle('A:J')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
//所有垂直居中
$objPHPExcel->getActiveSheet()->getStyle('A:J')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
//填入主标题
$objPHPExcel->getActiveSheet()->setCellValue('A1', '测试');
//填入副标题
$objPHPExcel->getActiveSheet()->setCellValue('A2', '测试(导出日期:' . date('Y-m-d H:i:s', time()) . ')');
//填入表头
$objPHPExcel->getActiveSheet()->setCellValue('A3', '序号');
$objPHPExcel->getActiveSheet()->setCellValue('B3', '用户名');
$objPHPExcel->getActiveSheet()->setCellValue('C3', '密码');
$objPHPExcel->getActiveSheet()->setCellValue('D3', '邮箱');
$objPHPExcel->getActiveSheet()->setCellValue('E3', '手机号');
$objPHPExcel->getActiveSheet()->setCellValue('F3', '注册时间');
//写数据到表格里面去
foreach ($data as $key => $value) {
$i = $key + 1;//表格是从1开始的
$objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 3), $value['id']);
$objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 3), $value['username']);
$objPHPExcel->getActiveSheet()->setCellValue('C' . ($i + 3), $value['password']);
$objPHPExcel->getActiveSheet()->setCellValue('D' . ($i + 3), $value['email']);
$objPHPExcel->getActiveSheet()->setCellValue('E' . ($i + 3), $value['mobile']);
$objPHPExcel->getActiveSheet()->setCellValue('F' . ($i + 3), $value['create_time']);
}
//下载这个表格,在浏览器输出
$filename = '测试';
$outputFileName = $filename . ".xls";
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:attachment;filename="' . $outputFileName . '"'); //到文件
////header(‘Content-Disposition:inline;filename="‘.$outputFileName.‘"‘); //到浏览器
header("Content-Transfer-Encoding: binary");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
$objWriter->save('php://output');
}
public function importExcel(){
//判断是否符合文件格式
$allowedExts = array("xls", "xlsx", "csv");
$temp = explode(".", $_FILES["myfile"]["name"]);
$extension = end($temp); // 获取文件后缀名
$filePath = '';
if(!in_array($extension,$allowedExts)){
echo "文件格式不对";exit();
}
if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
$savePath= './asset/upload/';
$str =date('Ymdhis');
$fileName=$str.'.'.pathinfo($_FILES['myfile']['name'],PATHINFO_EXTENSION);
//移动到指定的目录
if(move_uploaded_file($_FILES['myfile']['tmp_name'],$savePath.$fileName)){
echo "<script>alert('上传成功')</script>";
}
$this->load->library('PHPExcel');
if (!file_exists($savePath.$fileName)) {
die('no file!');
}
$filePath="./asset/upload/".$fileName;
$PHPReader = new PHPExcel_Reader_Excel2007();
if (!$PHPReader->canRead($filePath)) {
$PHPReader = new PHPExcel_Reader_Excel5();
if (!$PHPReader->canRead($filePath)) {
echo 'no Excel';
return;
}
}
$PHPExcel = $PHPReader->load($filePath);
//读取excel文件中的第一个工作表
$sheet = $PHPExcel->getSheet(0);
//取得最大的列号
$allColumn = $sheet->getHighestColumn();
//取得最大的行号
$allRow = $sheet->getHighestRow();
for($currentRow=3;$currentRow<$allRow;$currentRow++){
$name=$PHPExcel->getActiveSheet()->getCell('A'.$currentRow)->getValue();
$password=$PHPExcel->getActiveSheet()->getCell('B'.$currentRow)->getValue();
$email=$PHPExcel->getActiveSheet()->getCell('C'.$currentRow)->getValue();
$mobile=$PHPExcel->getActiveSheet()->getCell('D'.$currentRow)->getValue();
//插入数据库
$res=$this->db->insert('user',['username'=>$name,'password'=>$password,'email'=>$email,'mobile'=>$mobile,'create_time'=>date('Y-m-d H:i:s',time())]);
}
if($res){
echo "导入成功";
}else{
echo "导出失败";
}
}
}
}
PHPExcel集成对数据导入和导出的更多相关文章
- ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
这篇文章主要介绍了ThinkPHP使用PHPExcel实现Excel数据导入导出,非常实用的功能,需要的朋友可以参考下 本文所述实例是使用在Thinkphp的开发框架上,要是使用在其他框架也是同样的方 ...
- TP3.2加载外部PHPexcel类,实现导入和导出
TP3.2加载外部PHPexcel类,实现导入和导出 导入: 1.将下载好的PHPexcel文件放到libray/Org/Uti/文件夹下,将PHPEXCEL.PHP改为PHPEXCEL.class. ...
- 数据分析(7):pandas介绍和数据导入和导出
前言 Numpy Numpy是科学计算的基础包,对数组级的运算支持较好 pandas pandas提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数.pandas兼具Numpy高性能的数组计 ...
- Hawk 5.1 数据导入和导出
除了一般的数据库导入导出,Hawk还支持从文件导入和导出,支持的文件类型包括: Excel CSV(逗号分割文本文件) TXT (制表符分割文本文件) Json xml Excel 目前来看,Exce ...
- MySQL学习笔记十一:数据导入与导出
数据导入 1.mysqlimport命令行导入数据 在使用mysqlimport命令导入数据时,数据来源文件名要和目标表一致,不想改文件名的话,可以复制一份创建临时文件,示例如下. 建立一个文本use ...
- Talend open studio数据导入、导出、同步Mysql、oracle、sqlserver简单案例
推荐大家一个BI工具:talend open studio.我也是刚接触,懂得不多,感觉比较神奇就想大家推荐一下... 由于公司项目,接触了一下BI工具talend,感觉功能很强大, 可以同步多种数据 ...
- Linux服务器上的oracle数据导入和导出
背景: 在同一台Linux服务器上,有两个数据库用户,分别为:database1,database2,如何把database1用户下面的所有的表和数据,导入到database2数据库(database ...
- MariaDB/MySQL备份和恢复(二):数据导入、导出
MariaDB/MySQL备份恢复系列: 备份和恢复(一):mysqldump工具用法详述 备份和恢复(二):导入.导出表数据 备份和恢复(三):xtrabackup用法和原理详述 1.导出.导入数据 ...
- mysql数据库中的数据导入与导出
需求: 在本地电脑上的mysql中创建了一个数据库,并且在该数据库中创建了很多表,表中数据比较多: 现在想换一台电脑,但是又不想重新建数据库.建表.造数据. 解决方案: 利用mysql提供的命令,在本 ...
随机推荐
- 给Django的Admin添加自定义Action 并移除需要选择对象的限制
不得不说,Django的Admin真的给开发带来很多便利,这不,我又来折腾了,这次是添加自定义的action 这个自定义的Action可以看看官方文档的介绍,很详细,不再赘述. https://doc ...
- js对象数组新增、修改时的验证是否重复的逻辑
JS代码: // 定义数据集合 const persons = [ { id: 1, name: '张三' }, { id: 2, name: '李四' } ] console.log('') con ...
- 神奇的BUG系列-01
有时候遇见一个bug,感觉就是他了 其实他也不过是你职业生涯中写的千千万万个bug中的一员 你所要做的,是放下 日子还长,bug很多,不差这一个 就此别过,分手快乐 一辈子那么长,一天没放下键盘 你就 ...
- 如何设置Tomact的标题,运行Tomcat显示为自己程序的命名
当我们使用Tomcat部署好一个web系统后,在窗口处默认会显示Tomcat名字.但如果我们用多个Tomcat部署时,则需要区分这些窗口,这是需要修改Tomact的配置,来设置一个我们需要显示的标题. ...
- 数据库系统第六章【关系数据理论】(B站视频)
目录 数据库系统第六章[关系数据理论](B站视频) 一.前言 二.规范化 函数依赖 三种分类 如何确定函数依赖? 平凡函数依赖vs非平凡函数依赖 完全函数依赖vs部分函数依赖 传递函数依赖 码 超码 ...
- HashMap源码解析、jdk7和8之后的区别、相关问题分析(多线程扩容带来的死循环)
一.概览 HashMap<String, Integer> map = new HashMap<>(); 这个语句执行起来,在 jdk1.8 之前,会创建一个长度是 16 的 ...
- 你不得不知的Java基础知识
本篇博客主要记录Java中面向对象的概念和Java语法的基础知识. 面向对象 什么是面向对象 面向对象是一种优秀的软件设计思想,是相对于面向过程.面向切面等设计思想的一种软件设计理念.它的核心思想是运 ...
- 8.ffmpeg-基础常用知识
1.封装格式MPEG-4其中 MPEG-1 和 MPEG-2 是采用相同原理为基础的预测编码.变换编码. 熵编码及运动补偿等第一代数据压缩编码技术:MPEG-4(ISO/IEC 14496)则是基于第 ...
- apache常见错误:VC运行库(找不到 VCRUNTIME140.dll)
1. 安装apache为系统服务时报错:找不到 VCRUNTIME140.dll 解决方案:安装 VC2015 2. 下载并安装 VC2015 运行库, 运行 VC_redist.x64.exe 无脑 ...
- 图解选择排序及算法优化(Java实现)
选择排序 前言 原理:每次循环对比找出最小/大值,将最值的元素交换至左侧 思想:直接选择排序(Straight Select Sort)算法思想:第一趟从n个元素的数据序列中选出关键字最小/大的元素并 ...