基于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 相关文章推荐
一个颜色轮换的简单例子
Oct 09 PHP
亲密接触PHP之PHP语法学习笔记1
Dec 17 PHP
PHP中MD5函数使用实例代码
Jun 07 PHP
php循环检测目录是否存在并创建(循环创建目录)
Jan 06 PHP
PHP学习笔记之三 数据库基本操作
Jan 17 PHP
file_get_contents获取不到网页内容的解决方法
Mar 07 PHP
分享一个超好用的php header下载函数
Jan 31 PHP
php读取flash文件高宽帧数背景颜色的方法
Jan 06 PHP
php中ob函数缓冲机制深入理解
Aug 03 PHP
php创建桌面快捷方式实现方法
Dec 31 PHP
深入理解php printf() 输出格式化的字符串
May 23 PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 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中使用Oracle数据库(1)
2006/10/09 PHP
php 各种应用乱码问题的解决方法
2010/05/09 PHP
php中CI操作多个数据库的代码
2012/07/05 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
html数组字符串拼接的最快方法
2009/09/16 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
页面使用密码保护代码
2013/04/10 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
JavaScript调用ajax获取文本文件内容实现代码
2014/03/28 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
在Linux上用forever实现Node.js项目自启动
2014/07/09 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
微信小程序 地图map实例详解
2017/06/07 Javascript
vue深入解析之render function code详解
2017/07/18 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
vue 实现tab切换保持数据状态
2020/07/21 Javascript
[05:08]第一届“网鱼杯”DOTA2比赛精彩集锦
2014/09/05 DOTA
Python实现发送email的几种常用方法
2014/08/18 Python
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
毕业生自荐信的主要内容
2013/10/29 职场文书
秦始皇兵马俑导游词
2015/02/02 职场文书
高校教师个人总结
2015/02/10 职场文书
工程催款通知书
2015/04/17 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
步步惊心观后感
2015/06/12 职场文书