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实现 在光标处插入指定内容
May 25 Javascript
用AJAX返回HTML片段中的JavaScript脚本
Jan 04 Javascript
javascript-简单的计算器实现步骤分解(附图)
May 30 Javascript
Bootstrap每天必学之表单
Nov 23 Javascript
ajax跨域调用webservice的实现代码
May 09 Javascript
浅谈JavaScript 中有关时间对象的方法
Aug 15 Javascript
jquery实现全选、不选、反选的两种方法
Sep 06 Javascript
将JSON字符串转换成Map对象的方法
Nov 30 Javascript
微信开发之微信jssdk录音功能开发示例
Oct 22 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
May 07 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
Dec 04 Javascript
jQuery实现鼠标拖拽登录框移动效果
Sep 13 jQuery
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制作的意见反馈表源码
2007/03/11 PHP
微信支付开发维权通知实例
2016/07/12 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
javascript实现电脑和手机版样式切换
2017/11/10 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
layui插件表单验证提交触发提交的例子
2019/09/09 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
[40:19]2018完美盛典CS.GO表演赛
2018/12/17 DOTA
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
python装饰器与递归算法详解
2016/02/18 Python
遗传算法之Python实现代码
2017/10/10 Python
Python实现识别手写数字大纲
2018/01/29 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
python 随机森林算法及其优化详解
2019/07/11 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
python的json包位置及用法总结
2020/06/21 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
食品安全承诺书
2014/05/22 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
旷课检讨书范文
2015/01/27 职场文书
本科毕业答辩开场白
2015/05/27 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android