基于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 相关文章推荐
Windows下的PHP5.0安装配制详解
Sep 05 PHP
用PHP和ACCESS写聊天室(一)
Oct 09 PHP
php 生成随机验证码图片代码
Feb 08 PHP
sphinx增量索引的一个问题
Jun 14 PHP
php数组函数序列之array_flip() 将数组键名与值对调
Nov 07 PHP
ajax在joomla中的原生态应用代码
Jul 19 PHP
php实现与erlang的二进制通讯实例解析
Jul 23 PHP
php批量删除cookie的简单实现方法
Jan 26 PHP
微信获取用户地理位置信息的原理与步骤
Nov 12 PHP
PHP编程中尝试程序并发的几种方式总结
Mar 21 PHP
PHP实现的XML操作类【XML Library】
Dec 29 PHP
PHP实现常用排序算法的方法
Feb 05 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 第二节 数据类型之数值型
2012/04/28 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
php如何获取文件的扩展名
2015/10/28 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
pycharm 使用心得(五)断点调试
2014/06/06 Python
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
Python绑定方法与非绑定方法详解
2017/08/18 Python
Python列表删除的三种方法代码分享
2017/10/31 Python
python 格式化输出百分号的方法
2019/01/20 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
详解python中*号的用法
2019/10/21 Python
python numpy数组中的复制知识解析
2020/02/03 Python
python3 自动打印出最新版本执行的mysql2redis实例
2020/04/09 Python
Python爬虫之Spider类用法简单介绍
2020/08/04 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
实例讲解CSS3中的box-flex弹性盒属性布局
2016/06/09 HTML / CSS
德国网上花店:Valentins
2018/08/15 全球购物
RUIFIER官网:英国奢侈高级珠宝品牌
2020/06/12 全球购物
仪器仪表检测毕业生自荐信
2013/10/31 职场文书
2014年派出所工作总结
2014/11/21 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
2015年乡镇工会工作总结
2015/05/19 职场文书
教育教学读书笔记
2015/07/02 职场文书
python解决12306登录验证码的实现
2021/04/18 Python
Python面向对象之内置函数相关知识总结
2021/06/24 Python
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS