PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解


Posted in PHP onJune 03, 2013

PHP导出EXCEL快速开发指南
phpexcel有专有的开发文档,详细操作请参考其开发文档,本文档只是对其在使用上作了优化整合,便于在新项目中快速开发。
phpexcel生成文件同样有两种方式,一种方式为直接输出,一种方式为生成静态文件。
直接输出:
主文件为(class目录的同目录文件):

<?php 
include("./class/class.php"); // 包含class的基本头文件
include("./class/phpexcel/PHPExcel.php"); // 生成excel的基本类定义(注意文件名的大小写)
// 如果直接输出excel文件,则要包含此文件
include("./class/phpexcel/PHPExcel/IOFactory.php");
// 创建phpexcel对象,此对象包含输出的内容及格式
$m_objPHPExcel = new PHPExcel();
// 模板文件,为了实现格式与内容分离,有关输出文件具体内容实现在模板文件中
// 模板文件将对象$m_objPHPExcel进行操作
include("./include/excel.php");
// 输出文件的类型,excel或pdf
$m_exportType = "excel";
$m_strOutputExcelFileName = date('Y-m-j_H_i_s').".xls"; // 输出EXCEL文件名
$m_strOutputPdfFileName = date('Y-m-j_H_i_s').".pdf"; // 输出PDF文件名
// PHPExcel_IOFactory, 输出excel
//require_once dirname(__FILE__).'/Classes/PHPExcel/IOFactory.php';
// 如果需要输出EXCEL格式
if($m_exportType=="excel"){
$objWriter = PHPExcel_IOFactory::createWriter($m_objPHPExcel, 'Excel5');
// 从浏览器直接输出$m_strOutputExcelFileName
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type: application/vnd.ms-excel;");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header("Content-Disposition:attachment;filename=".$m_strOutputExcelFileName);
header("Content-Transfer-Encoding:binary");
$objWriter->save("php://output"); 
}
// 如果需要输出PDF格式
if($m_exportType=="pdf"){
$objWriter = PHPExcel_IOFactory::createWriter($m_objPHPExcel, 'PDF');
$objWriter->setSheetIndex(0);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type: application/pdf");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header("Content-Disposition:attachment;filename=".$m_strOutputPdfFileName);
header("Content-Transfer-Encoding:binary");
$objWriter->save("php://output"); 
}
?>

模板文件内容(附加常用操作)
<?php 
global $m_objPHPExcel; // 由外部文件定义
// 设置基本属性
$m_objPHPExcel->getProperties()->setCreator("Sun Star Data Center")
->setLastModifiedBy("Sun Star Data Center")
->setTitle("Microsoft Office Excel Document")
->setSubject("Test Data Report -- From Sunstar Data Center")
->setDescription("LD Test Data Report, Generate by Sunstar Data Center")
->setKeywords("sunstar ld report")
->setCategory("Test result file");
// 创建多个工作薄
$sheet1 = $m_objPHPExcel->createSheet();
$sheet2 = $m_objPHPExcel->createSheet();
// 通过操作索引即可操作对应的工作薄
// 只需设置要操作的工作簿索引为当前活动工作簿,如
// $m_objPHPExcel->setActiveSheetIndex(0);
// 设置第一个工作簿为活动工作簿
$m_objPHPExcel->setActiveSheetIndex(0);
// 设置活动工作簿名称
// 如果是中文一定要使用iconv函数转换编码
$m_objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', '测试工作簿'));
// 设置默认字体和大小
$m_objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', '宋体'));
$m_objPHPExcel->getDefaultStyle()->getFont()->setSize(10);
// 设置一列的宽度
$m_objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);
// 设置一行的高度
$m_objPHPExcel->getActiveSheet()->getRowDimension('6')->setRowHeight(30);
// 合并单元格
$m_objPHPExcel->getActiveSheet()->mergeCells('A1:P1');
// 定义一个样式,加粗,居中
$styleArray1 = array(
'font' => array(
'bold' => true,
'color'=>array(
'argb' => '00000000',
),
),
'alignment' => array(
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
),
);
// 将样式应用于A1单元格
$m_objPHPExcel->getActiveSheet()->getStyle('A1')->applyFromArray($styleArray1);
// 设置单元格样式(黑色字体)
$m_objPHPExcel->getActiveSheet()->getStyle('H5')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_BLACK); // 黑色
// 设置单元格格式(背景)
$m_objPHPExcel->getActiveSheet()->getStyle('H5')->getFill()->getStartColor()->setARGB('00ff99cc'); // 将背景设置为浅粉色
// 设置单元格格式(数字格式)
$m_objPHPExcel->getActiveSheet()->getStyle('F1')->getNumberFormat()->setFormatCode('0.000');
// 给特定单元格中写入内容
$m_objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello Baby');
// 设置单元格样式(居中)
$m_objPHPExcel->getActiveSheet()->getStyle('H5')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
// 给单元格中放入图片, 将数据图片放在J1单元格内
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('Logo');
$objDrawing->setDescription('Logo');
$objDrawing->setPath("../logo.jpg"); // 图片路径,只能是相对路径
$objDrawing->setWidth(400); // 图片宽度
$objDrawing->setHeight(123); // 图片高度
$objDrawing->setCoordinates('J1');//单元格
$objDrawing->setWorksheet($m_objPHPExcel->getActiveSheet());
// 设置A5单元格内容并增加超链接
$m_objPHPExcel->getActiveSheet()->setCellValue('A5', iconv('gbk', 'utf-8', '超链接keiyi.com'));
$m_objPHPExcel->getActiveSheet()->getCell('A5')->getHyperlink()->setUrl('http://www.keiyi.com/');
?>

在服务器端生成静态文件
相比直接生成,这两种方法的主要区别是生成格式的不同,模板文件完全相同,下边是一个在上例基础上更改后的样子,注意与上例的区别。
<?php 
// 包含class的基本头文件
include("./class/class.php");
// 生成excel的基本类定义(注意文件名的大小写)
include("./class/phpexcel/PHPExcel.php");
// 包含写Excel5格式的文件,如果需要生成excel2007的文件,包含对应的Writer即可
include("./class/phpexcel/PHPExcel/Writer/Excel5.php");
// 包含写PDF格式文件
include("./class/phpexcel/PHPExcel/Writer/PDF.php");
// 创建phpexcel对象,此对象包含输出的内容及格式
$m_objPHPExcel = new PHPExcel();
// 模板文件,为了实现格式与内容分离,有关输出文件具体内容实现在模板文件中
// 模板文件将对象$m_objPHPExcel进行操作
include("./include/excel.php");
// 输出文件的类型,excel或pdf
$m_exportType = "pdf";
$m_strOutputExcelFileName = date('Y-m-j_H_i_s').".xls"; // 输出EXCEL文件名
$m_strOutputPdfFileName = date('Y-m-j_H_i_s').".pdf"; // 输出PDF文件名
// 输出文件保存路径,此路径必须可写
$m_strOutputPath = "./output/";
// 如果需要输出EXCEL格式
if($m_exportType=="excel"){
$objWriter = new PHPExcel_Writer_Excel5($m_objPHPExcel);
$objWriter->save($m_strOutputPath.$m_strOutputExcelFileName); 
}
// 如果需要输出PDF格式
if($m_exportType=="pdf"){
$objWriter = new PHPExcel_Writer_PDF($m_objPHPExcel);
$objWriter->save($m_strOutputPath.$m_strOutputPdfFileName); 
}
?>

PHP 相关文章推荐
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
Jun 03 PHP
如何在smarty中增加类似foreach的功能自动加载数据
Jun 26 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
Jan 07 PHP
ThinkPHP CURD方法之limit方法详解
Jun 18 PHP
php简单实现查询数据库返回json数据
Apr 16 PHP
php使用array_search函数实现数组查找的方法
Jun 12 PHP
php检查页面是否被百度收录
Oct 28 PHP
WordPress主题制作之模板文件的引入方法
Dec 28 PHP
yii2 页面底部加载css和js的技巧
Apr 21 PHP
php递归函数怎么用才有效
Feb 24 PHP
详解php curl带有csrf-token验证模拟提交方法
Apr 18 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
PHP Cookie的使用教程详解
Jun 03 #PHP
PHP register_shutdown_function函数的深入解析
Jun 03 #PHP
深入PHP与浏览器缓存的分析
Jun 03 #PHP
PHP判断图片格式的七种方法小结
Jun 03 #PHP
基于session_unset与session_destroy的区别详解
Jun 03 #PHP
PHP批量采集下载美女图片的实现代码
Jun 03 #PHP
基于PHP CURL获取邮箱地址的详解
Jun 03 #PHP
You might like
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
php原生数据库分页的代码实例
2019/02/18 PHP
laravel5.5添加echarts实现画图功能的方法
2019/10/09 PHP
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
BootStrap中的Fontawesome 图标
2017/05/25 Javascript
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
浅谈vue中resetFields()使用注意事项
2020/08/12 Javascript
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
python web自制框架之接受url传递过来的参数实例
2018/12/17 Python
python调用matlab的m自定义函数方法
2019/02/18 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
python绘制地震散点图
2019/06/18 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
详解Python 函数参数的拆解
2020/09/02 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2021/01/08 Python
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
智能室内花园:Click & Grow
2021/01/29 全球购物
电气专业应届生求职信
2013/11/01 职场文书
公司担保书范文
2014/05/21 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
教师个人考察材料
2014/12/16 职场文书
初中信息技术教学计划
2015/01/22 职场文书
社区母亲节活动总结
2015/02/10 职场文书
初中班主任心得体会
2016/01/07 职场文书
mysql中between的边界,范围说明
2021/06/08 MySQL
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS