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 相关文章推荐
javascript之ESC(第二类混淆)
May 06 Javascript
DOM 基本方法
Jul 18 Javascript
createElement与createDocumentFragment的点点区别小结
Dec 19 Javascript
JS的replace方法详细介绍
Nov 09 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
Oct 16 Javascript
node.js中的console.time方法使用说明
Dec 09 Javascript
jQuery Ztree行政地区树状展示(点击加载)
Nov 09 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
Nov 11 Javascript
Javascript使用SWFUpload进行多文件上传
Nov 16 Javascript
详解JS几种变量交换方式以及性能分析对比
Nov 25 Javascript
JavaScript数组去重的6个方法
Jan 21 Javascript
Vue.Draggable拖拽功能的配置使用方法
Jul 29 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
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
Laravel框架表单验证详解
2014/09/04 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
JS和JQ的event对象区别分析
2014/11/24 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
Python多线程的退出控制实现
2020/08/10 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
英文版区域经理求职信
2013/10/23 职场文书
员工薪酬福利制度
2014/01/17 职场文书
煤矿安全承诺书
2014/05/22 职场文书
宪法宣传周工作方案
2014/05/26 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
党员三严三实心得体会
2014/10/13 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
广播体操比赛主持词
2015/06/29 职场文书
javascript数组includes、reduce的基本使用
2021/07/02 Javascript
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android