基于PHPExcel的常用方法总结


Posted in PHP onJune 13, 2013
// 通常PHPExcel对象有两种实例化的方式
// 1. 通过new关键字创建空白文档
$phpexcel = newPHPExcel();
// 2. 通过读取已有的模板创建
$phpexcel =PHPExcel_IOFactory::createReader("Excel5")->load("template.xls");

<?
//设置PHPExcel类库的include path
set_include_path('.'. PATH_SEPARATOR .
                 'D:\Zeal\PHP_LIBS' . PATH_SEPARATOR .
                 get_include_path());
/**
 * 以下是使用示例,对于以 //// 开头的行是不同的可选方式,请根据实际需要
 * 打开对应行的注释。
 * 如果使用 Excel5 ,输出的内容应该是GBK编码。
 */
require_once 'PHPExcel.php';
// uncomment
////require_once 'PHPExcel/Writer/Excel5.php';    // 用于其他低版本xls
// or
////require_once 'PHPExcel/Writer/Excel2007.php'; // 用于 excel-2007 格式
// 创建一个处理对象实例
$objExcel = new PHPExcel();
// 创建文件格式写入对象实例, uncomment
////$objWriter = new PHPExcel_Writer_Excel5($objExcel);    // 用于其他版本格式
// or
////$objWriter = new PHPExcel_Writer_Excel2007($objExcel); // 用于 2007 格式
//$objWriter->setOffice2003Compatibility(true);
//*************************************
//设置文档基本属性
$objProps = $objExcel->getProperties();
$objProps->setCreator("Zeal Li");
$objProps->setLastModifiedBy("Zeal Li");
$objProps->setTitle("Office XLS Test Document");
$objProps->setSubject("Office XLS Test Document, Demo");
$objProps->setDescription("Test document, generated by PHPExcel.");
$objProps->setKeywords("office excel PHPExcel");
$objProps->setCategory("Test");
//*************************************
//设置当前的sheet索引,用于后续的内容操作。
//一般只有在使用多个sheet的时候才需要显示调用。
//缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0
$objExcel->setActiveSheetIndex(0);
$objActSheet = $objExcel->getActiveSheet();
//设置当前活动sheet的名称
$objActSheet->setTitle('测试Sheet');
//*************************************
//设置单元格内容
//
//由PHPExcel根据传入内容自动判断单元格内容类型
$objActSheet->setCellValue('A1', '字符串内容');  // 字符串内容
$objActSheet->setCellValue('A2', 26);            // 数值
$objActSheet->setCellValue('A3', true);          // 布尔值
$objActSheet->setCellValue('A4', '=SUM(A2:A2)'); // 公式
//显式指定内容类型
$objActSheet->setCellValueExplicit('A5', '847475847857487584', 
                                   PHPExcel_Cell_DataType::TYPE_STRING);
//合并单元格
$objActSheet->mergeCells('B1:C22');
//分离单元格
$objActSheet->unmergeCells('B1:C22');
//*************************************
//设置单元格样式
//
//设置宽度
$objActSheet->getColumnDimension('B')->setAutoSize(true);
$objActSheet->getColumnDimension('A')->setWidth(30);
$objStyleA5 = $objActSheet->getStyle('A5');
//设置单元格内容的数字格式。
//
//如果使用了 PHPExcel_Writer_Excel5 来生成内容的话,
//这里需要注意,在 PHPExcel_Style_NumberFormat 类的 const 变量定义的
//各种自定义格式化方式中,其它类型都可以正常使用,但当setFormatCode
//为 FORMAT_NUMBER 的时候,实际出来的效果被没有把格式设置为"0"。需要
//修改 PHPExcel_Writer_Excel5_Format 类源代码中的 getXf($style) 方法,
//在 if ($this->_BIFF_version == 0x0500) { (第363行附近)前面增加一
//行代码: 
//if($ifmt === '0') $ifmt = 1;
//
//设置格式为PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大数字
//被使用科学记数方式显示,配合下面的 setAutoSize 方法可以让每一行的内容
//都按原始内容全部显示出来。
$objStyleA5
    ->getNumberFormat()
    ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
//设置字体
$objFontA5 = $objStyleA5->getFont();
$objFontA5->setName('Courier New');
$objFontA5->setSize(10);
$objFontA5->setBold(true);
$objFontA5->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
$objFontA5->getColor()->setARGB('FF999999');
//设置对齐方式
$objAlignA5 = $objStyleA5->getAlignment();
$objAlignA5->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objAlignA5->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
//设置边框
$objBorderA5 = $objStyleA5->getBorders();
$objBorderA5->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getTop()->getColor()->setARGB('FFFF0000'); // color
$objBorderA5->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//设置填充颜色
$objFillA5 = $objStyleA5->getFill();
$objFillA5->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objFillA5->getStartColor()->setARGB('FFEEEEEE');
//从指定的单元格复制样式信息.
$objActSheet->duplicateStyle($objStyleA5, 'B1:C22');
//*************************************
//添加图片
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('ZealImg');
$objDrawing->setDescription('Image inserted by Zeal');
$objDrawing->setPath('./zeali.net.logo.gif');
$objDrawing->setHeight(36);
$objDrawing->setCoordinates('C23');
$objDrawing->setOffsetX(10);
$objDrawing->setRotation(15);
$objDrawing->getShadow()->setVisible(true);
$objDrawing->getShadow()->setDirection(36);
$objDrawing->setWorksheet($objActSheet);
//添加一个新的worksheet
$objExcel->createSheet();
$objExcel->getSheet(1)->setTitle('测试2');
//保护单元格
$objExcel->getSheet(1)->getProtection()->setSheet(true);
$objExcel->getSheet(1)->protectCells('A1:C22', 'PHPExcel');
//*************************************
//输出内容
//
$outputFileName = "output.xls";
//到文件
////$objWriter->save($outputFileName);
//or
//到浏览器
////header("Content-Type: application/force-download");
////header("Content-Type: application/octet-stream");
////header("Content-Type: application/download");
////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');
?>
PHP 相关文章推荐
基于mysql的论坛(1)
Oct 09 PHP
PHP base64编码后解码乱码的解决办法
Jun 19 PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 PHP
20个2014年最优秀的PHP框架回顾
Oct 22 PHP
php批量添加数据与批量更新数据的实现方法
Dec 16 PHP
php实现比较两个字符串日期大小的方法
May 12 PHP
php实现上传图片文件代码
Jul 19 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
yii2安装详细流程
May 23 PHP
PHP日期和时间函数的使用示例详解
Aug 06 PHP
Yii中特殊行为ActionFilter的使用方法示例
Oct 18 PHP
深入PHP FTP类的详解
Jun 13 #PHP
PHP代码审核的详细介绍
Jun 13 #PHP
PHP设计模式之调解者模式的深入解析
Jun 13 #PHP
PHP设计模式之迭代器模式的深入解析
Jun 13 #PHP
PHP设计模式之解释器模式的深入解析
Jun 13 #PHP
PHP设计模式之代理模式的深入解析
Jun 13 #PHP
PHP设计模式之责任链模式的深入解析
Jun 13 #PHP
You might like
PHP的cURL库简介及使用示例
2015/02/06 PHP
php操作redis缓存方法分享
2015/06/03 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
2020/10/20 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
Jquery 常用方法经典总结
2010/01/28 Javascript
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
2011/07/26 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
python循环监控远程端口的方法
2015/03/14 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
python批量修改xml属性的实现方式
2020/03/05 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
HTML5实现音频和视频嵌入的方法
2018/08/22 HTML / CSS
一套带答案的C++笔试题
2014/01/10 面试题
预备党员的自我评价
2014/03/12 职场文书
同志主要表现材料
2014/08/21 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书