PHPExcel中的一些常用方法汇总


Posted in Javascript onJanuary 23, 2015

PHPExcel 是相当强大的 MS Office Excel 文档生成类库,当需要输出比较复杂格式数据的时候,PHPExcel 是个不错的选择。不过其使用方法相对来说也就有些繁琐。列举以记之。

<?

//设置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');
?>
Javascript 相关文章推荐
HTML中Select不用Disabled实现ReadOnly的效果
Apr 07 Javascript
用js统计用户下载网页所需时间的脚本
Oct 15 Javascript
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
Jan 13 Javascript
关于jquery性能最佳实践的讨论,与求教
Mar 30 Javascript
jquery定时滑出可最小化的底部提示层特效代码
Oct 02 Javascript
js取模(求余数)隔行变色
May 15 Javascript
js仿腾讯QQ的web登陆界面
Aug 19 Javascript
Node.js中路径处理模块path详解
Nov 14 Javascript
详解vue组件通信的三种方式
Jun 30 Javascript
微信小程序的日期选择器的实例详解
Sep 29 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
Jun 28 Javascript
vscode下vue项目中eslint的使用方法
Jan 13 Javascript
jQuery操作DOM之获取表单控件的值
Jan 23 #Javascript
使用angular写一个hello world
Jan 23 #Javascript
Javascript中的几种URL编码方法比较
Jan 23 #Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
Jan 23 #Javascript
AngularJS语法详解(续)
Jan 23 #Javascript
Jquery动态替换div内容及动态展示的方法
Jan 23 #Javascript
AngularJS语法详解
Jan 23 #Javascript
You might like
php gzip压缩输出的实现方法
2013/04/27 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
PHP PDOStatement::nextRowset讲解
2019/02/01 PHP
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
2015/04/06 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
基于JavaScript实现的顺序查找算法示例
2017/04/14 Javascript
深入理解vue-router之keep-alive
2017/08/31 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
详解VUE调用本地json的使用方法
2019/05/15 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
Pyhton中防止SQL注入的方法
2015/02/05 Python
python实现端口转发器的方法
2015/03/13 Python
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
详解python中的lambda与sorted函数
2020/09/04 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
马来西亚与新加坡长途巴士售票网站:BusOnlineTicket.com
2018/11/05 全球购物
请说出你所知道的线程同步的方法
2013/04/19 面试题
WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
2015/08/25 面试题
应届医学毕业生求职信分享
2013/12/02 职场文书
竞争上岗实施方案
2014/03/21 职场文书
医德医魂心得体会
2014/09/11 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang
Nginx限流和黑名单配置
2022/05/20 Servers