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 相关文章推荐
Firefox下提示illegal character并出现乱码的原因
Mar 25 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
May 17 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
Mar 25 Javascript
jQuery拖动元素并对元素进行重新排序
Dec 30 Javascript
原生JS实现图片翻书效果
Feb 16 Javascript
js实现带三角符的手风琴效果
Mar 01 Javascript
基于JavaScript实现选项卡效果
Jul 21 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
Oct 12 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
Aug 21 Javascript
微信小程序云函数使用mysql数据库过程详解
Aug 07 Javascript
Vue+ElementUI table实现表格分页
Dec 14 Javascript
Vue如何循环提取对象数组中的值
Nov 18 Vue.js
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详细彻底学习Smarty
2008/03/27 PHP
php错误、异常处理机制(补充)
2012/05/07 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
2014/04/10 PHP
10个简化PHP开发的工具
2014/12/25 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
把input初始值不写value的具体实现方法
2013/07/04 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
JS中数据结构之栈
2019/01/01 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
[jQuery] 事件和动画详解
2019/03/05 jQuery
如何在微信小程序里面退出小程序的方法
2019/04/28 Javascript
微信小程序实现带参数的分享功能(两种方法)
2019/05/17 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
python实现dnspod自动更新dns解析的方法
2014/02/14 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
2018/10/29 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
函授本科毕业生自我鉴定
2013/10/16 职场文书
资料员的岗位职责
2013/11/20 职场文书
药学专业个人的自我评价
2013/12/31 职场文书
小学生期末自我鉴定
2014/01/19 职场文书
自荐信的格式
2014/03/10 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
数学备课组工作总结
2015/08/12 职场文书
小学思品教学反思
2016/02/20 职场文书
python 模块重载的五种方法
2021/04/24 Python
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB
Redis读写分离搭建的完整步骤
2021/09/14 Redis