php导出表格两种方法 ——PhpExcel的列子
php常用的导出表格有两种方法,第一种是输出表格,这种方法打开的时候有警告提示,一般导出表格会用phpexcel,这个导出比较灵活,而且还可以设置表格的样式。
第一种导出例子
/**
* 执行导出
* @param unknown $result 数据源
*/
function Excel($result,$fileName='',$Key=''){
$fileName = iconv('utf-8', 'gbk',$fileName);
header("Content-type:text/html;charset=utf-8");
header("Content-type:application/octet-stream");
header("Accept-Ranges:bytes");
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=$fileName".date("Y-m-d").".xls");
header("Pragma: no-cache");
header("Expires: 0");
//第一行显示key
if(!$Key){
$Key = array("姓名 ","性别 ","手机号 ","意向车型 ","购买计划","提交时间");
}
echo iconv('utf-8', 'gbk', implode("\t", $Key))."\n";
//第三行显示剩余val
foreach($result as $key=>$val){
echo iconv('utf-8', 'gbk', implode("\t", $val))."\n";
}
}
第二种导出使用phpexcel
/**
* 导出数据(生成excel)
* @param $data excel第一行数据
* 例:1、array('字段' => '1');
* @param $list 二维数组 导出的数据
* @param string $title 工作表名称
* @param string $filename 文件名称
* @return boolean
*/
public function output1($data , $list , $title = '数据模板' , $filename = '数据模板'){
$count = count($data);//数组长度
if(!is_array($data) || $count > $this->maxstr){//数据是否符合要求
return false;
}
// Create new PHPExcel object
$objPHPExcel = new \PHPExcel();
// 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");
// Add some data 第一行
// 添加一些数据 第一行
$SheetIndex = $objPHPExcel->setActiveSheetIndex(0);
$this->setAttendance($SheetIndex);//写入数据
//设置第一个单元格样式
$obActiveSheet = $objPHPExcel->getActiveSheet();
//设置高度
$obActiveSheet->getRowDimension('1')->setRowHeight(40);
$obActiveSheet->getRowDimension('6')->setRowHeight(100);
$obActiveSheet->getRowDimension('7')->setRowHeight(90);
$obActiveSheet->getRowDimension('8')->setRowHeight(90);
$obActiveSheet->getRowDimension('9')->setRowHeight(90);
$obActiveSheet->getRowDimension('10')->setRowHeight(80);
$obActiveSheet->getRowDimension('17')->setRowHeight(20);
$obActiveSheet->getRowDimension('18')->setRowHeight(30);
$obActiveSheet->getRowDimension('19')->setRowHeight(30);
//设置宽度
$obActiveSheet->getColumnDimension('A')->setWidth(12);
$obActiveSheet->getColumnDimension('B')->setWidth(18);
$obActiveSheet->getColumnDimension('C')->setWidth(15);
$obActiveSheet->getColumnDimension('D')->setWidth(15);
$obActiveSheet->getColumnDimension('E')->setWidth(15);
$obActiveSheet->getColumnDimension('H')->setWidth(15);
//导出
$this->outputPHPExcel($objPHPExcel, $filename);
}
/**
* 考勤数据写入
* @param $SheetIndex 单元格对象
* @param $Cycle 周期数据列表
* @param $_clock 员工考勤数据
* @return number 返回当前最大行数
*/
private function setAttendance($SheetIndex){
$c = 1;
/** ----------------------------考勤头部开始--------------------------------------- */
$chrA = chr($this->asciiA + 0);//A
$chrB= chr($this->asciiA + 1);//B
$chrC= chr($this->asciiA + 2);//C
$chrD= chr($this->asciiA + 3);//D
$chrE= chr($this->asciiA + 4);//E
$chrF= chr($this->asciiA + 5);//F
$chrG= chr($this->asciiA + 6);//G
$chrH= chr($this->asciiA + 7);//G
$chrI= chr($this->asciiA + 8);//G
$chrJ= chr($this->asciiA + 9);//G
$chrK= chr($this->asciiA + 10);//G
$chrL= chr($this->asciiA + 11);//G
$chrM= chr($this->asciiA + 12);//G
$chrN= chr($this->asciiA + 13);//G
$chrO= chr($this->asciiA + 14);//G
$SheetIndex->setCellValueExplicit($chrA.($c), '岗位考核模板');
$SheetIndex->mergeCells($chrA.($c).':'.$chrO.($c));//合并单元格 A2,A3
$SheetIndex->setCellValueExplicit($chrA.($c+1), '被考核人');
$SheetIndex->mergeCells($chrA.($c+1).':'.$chrA.($c+2));//合并单元格 A2,A3
$SheetIndex->setCellValueExplicit($chrB.($c+1), '姓名');
$SheetIndex->setCellValueExplicit($chrB.($c+2), '职务');
$SheetIndex->setCellValueExplicit($chrC.($c+1), 'xxx');
$SheetIndex->setCellValueExplicit($chrD.($c+1), '部门');
$SheetIndex->setCellValueExplicit($chrD.($c+2), '入职时间');
$SheetIndex->setCellValueExplicit($chrE.($c+1), '网站开发部');
$SheetIndex->mergeCells($chrE.($c+1).':'.$chrG.($c+1));//合并单元格
$SheetIndex->mergeCells($chrE.($c+2).':'.$chrG.($c+2));//合并单元格
$SheetIndex->setCellValueExplicit($chrH.($c+1), '被考核人主管');
$SheetIndex->mergeCells($chrH.($c+1).':'.$chrI.($c+1));//合并单元格
$SheetIndex->mergeCells($chrH.($c+2).':'.$chrI.($c+2));//合并单元格
$SheetIndex->setCellValueExplicit($chrJ.($c+1), '姓名');
$SheetIndex->setCellValueExplicit($chrJ.($c+2), '职务');
$SheetIndex->setCellValueExplicit($chrK.($c+1), 'xxx);
$SheetIndex->mergeCells($chrK.($c+1).':'.$chrO.($c+1));//合并单元格
$SheetIndex->mergeCells($chrK.($c+2).':'.$chrO.($c+2));//合并单元格
$SheetIndex->mergeCells($chrA.($c+3).':'.$chrO.($c+3));//合并单元格
//第5行
$SheetIndex->setCellValueExplicit($chrA.($c+4), '序号');
$SheetIndex->setCellValueExplicit($chrB.($c+4), '指标名称');
$SheetIndex->setCellValueExplicit($chrC.($c+4), '权重');
$SheetIndex->setCellValueExplicit($chrD.($c+4), '衡量方法');
$SheetIndex->setCellValueExplicit($chrM.($c+4), '评定');
$SheetIndex->setCellValueExplicit($chrN.($c+4), '评分');
$SheetIndex->setCellValueExplicit($chrO.($c+4), '最终得分');
$SheetIndex->mergeCells($chrD.($c+4).':'.$chrL.($c+4));//合并单元格
//第6行
$SheetIndex->setCellValueExplicit($chrA.($c+5), '1');
$SheetIndex->setCellValueExplicit($chrB.($c+5), '工作完成度');
$SheetIndex->setCellValueExplicit($chrC.($c+5), '30%');
$SheetIndex->setCellValueExplicit($chrD.($c+5), "A+:测试没有崩溃、严重并且无高级别bug
A:测试没有崩溃、严重并且高级别bug控制在所有bug的1%以内,中级别bug控制在10%
100:测试没有崩溃、严重并且高级别bug控制在所有bug的2%以内,中级别bug控制在20%
B :测试没有崩溃、严重并且高级别bug控制在所有bug的5%,使用方反馈系统中出现文案、兼容性等对系统造成较小影响的bug
B-: 有崩溃严重bug或者无奔溃严重bug但是有5%以上的高级别bug,使用方反馈在使用中出现功能无法使用、500、404等严重故障");
$SheetIndex->setCellValueExplicit($chrM.($c+5), '100');
$SheetIndex->setCellValueExplicit($chrN.($c+5), '100');
$SheetIndex->setCellValueExplicit($chrO.($c+5), '30');
$SheetIndex->mergeCells($chrD.($c+5).':'.$chrL.($c+5));//合并单元格
}
这只是部分代码
php导出表格两种方法 ——PhpExcel的列子的更多相关文章
- oracle数据的导入导出(两种方法三种方式)
大概了解数据库中数据的导入导出.在oracle中,导入导出数据的方法有两种,一种是使用cmd命令行的形式导入导出数据,另一种是使用PL/SQL工具导入导出数据. 1,使用cmd命令行导入导出数据 1. ...
- 关于Java中excel表格导出的总结(Java程序导出模板和Java根据模板导出表格两种实现方式)
导出excel通用模板(程序定义模板导出) 转载原文:https://www.jianshu.com/p/5c7b359a159c 如下代码,本方法主要用于程序定义模板格式,并导出文件.该方法将定义和 ...
- SQL2008全部数据导出导入两种方法【转】
方法一:生成脚本导出导入sql2008全部数据 第一步,右键要导出的数据库,任务--生成脚本 第二步,在设置脚本编写选项处,点击--高级(A),选择要编写脚本的数据的类型为:架构和数据 如果找 ...
- SQL2008全部数据导出导入两种方法
方法一:生成脚本导出导入sql2008全部数据第一步,右键要导出的数据库,任务--生成脚本 第二步,在设置脚本编写选项处,点击--高级(A),选择要编写脚本的数据的类型为:架构和数据 如果找不到 要编 ...
- SQL2008所有数据导出导入两种方法
方法一:生成脚本导出导入sql2008所有数据 第一步.右键要导出的数据库.任务--生成脚本 第二步,在设置脚本编写选项处,点击--高级(A),选择要编写脚本的数据的类型为:架构和数据 假设找不到 要 ...
- AE 将地图导出为图片的两种方法
在ArcGIS的开发中,我们经常需要将当前地图打印(或是转出)到图片文件中.将Map或Layout中的图象转出有两种方法,一种为通过IActiveView的OutPut函数,另外一种是通过IExpor ...
- js如何实现动态的在表格中添加和删除行?(两种方法)
js如何实现动态的在表格中添加和删除行?(两种方法) 一.总结 1.table元素有属性和一些方法(js使用) 方法一:添加可通过在table的innerHTML属性中添加tr和td来实现 tab.i ...
- html中如何实现表格移入移出时背景颜色改变?(两种方法)
html中如何实现表格移入移出时背景颜色改变?(两种方法) 一.总结 1.通过css的table标签的hover属性: 10 #tab:hover{ 11 background: green 12 } ...
- js如何动态创建表格(两种方法)
js如何动态创建表格(两种方法) 一.总结 一句话总结: 1.方法一:写好创建表格的html代码,将之赋值给div的innerHTML. 2.方法二.直接用创建好的table元素的方法insertRo ...
随机推荐
- java中参数" ..."的用法和意思
public static void executebindParam(PreparedStatement pstmt,Object ...os){ int len = os.length; try ...
- web记住我功能的实现
在web网页中经常可以看到记住我这样的功能,其实现原理是登陆时候在response中写入cookie,发送请求时,取出cookie判断,如果有则说明已经登陆 写cookie Cookie cookie ...
- C++ 二叉搜索树原理及其实现
首先是概念:二叉搜索树又称二叉排序树,它具有以下的性质: 若是左子树不为空,则左子树上所有节点的值小于根节点的值 若是右子树不为空,则右子树上所有结点的值大于根节点的值 二叉搜索树的左右子树也是二叉搜 ...
- git第一次上传push失败解决
第一次上传有可能会遇到push失败的情况,那是因为跟SVN一样,github上有一个README.md 文件没有下载下来 .我们得先 git pull --rebase origin master ...
- JAVA知识点总结篇(二)
数组 一维数组 声明 数据类型[] 数组名: 数据类型 数组名[]: 分配空间 数组名 = new 数据类型 [数组长度]: 可以在声明的同时分配空间,分配空间之后数组中才能放数据,数组元素都是通过下 ...
- CLRS10.1-7练习 - 用双队列实现栈
算法中心思想: 始终向非空队列进行入队操作 初始化时两个队列都为空,我们对q1进行入队操作 入栈: 只需执行其中一个队列入队操作即可, 具体操作哪一个队列,用一个标记变量标记 出栈流程图 代码实现 p ...
- 客开监控(BE/UI/BP)插件停用与启用
1.单据界面右键属性,获取当前客开监控页面URL连接:http://172.16.168.15/U9/erp/display.aspx?lnk=UFSoft.UBF.Cust.CustManager& ...
- spring整合RabbitMQ
今天就来康康spring怎么整合RabbitMQ 注意一点,在发送消息的时候对template进行配置mandatory=true保证监听有效 生产端还可以配置其他属性,比如发送重试,超时时间.次数. ...
- Windows 上的应用程序在运行期间可以给自己改名(可以做 OTA 自我更新)
原文:Windows 上的应用程序在运行期间可以给自己改名(可以做 OTA 自我更新) 程序如何自己更新自己呢?你可能会想到启动一个新的程序或者脚本来更新自己.然而 Windows 操作系统允许一个应 ...
- 解除Ubuntu系统的root登录图形界面限制
Ubuntu18.04.1开发团队为了Ubuntu18.04.1系统的安全,默认root不能登录图形界面,普通用户需要使用root权限时,只能通过sudo [命令] [参数] 临时使用root权限,或 ...