基于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 相关文章推荐
基于mysql的论坛(1)
Oct 09 PHP
PHP实现手机归属地查询API接口实现代码
Aug 27 PHP
PHP实现的带超时功能get_headers函数
Feb 10 PHP
php实现俄罗斯乘法实例
Mar 07 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
PHP生成和获取XML格式数据的方法
Mar 04 PHP
php字符串的替换,分割和连接方法
May 23 PHP
php从数据库中读取特定的行(实例)
Jun 02 PHP
PHP实现阿里大鱼短信验证的实例代码
Jul 10 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
解决php扩展安装不生效问题
Oct 25 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脚本数据库功能详解(下)
2006/10/09 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
深入理解PHP中的count函数
2016/05/31 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
2016/11/21 PHP
jquery CSS选择器笔记
2010/03/29 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
jQuery入门介绍之基础知识
2015/01/13 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
安装vue-cli的简易过程
2018/05/22 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
python 重定向获取真实url的方法
2018/05/11 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
英国休闲奢华的缩影:Crew Clothing
2019/05/05 全球购物
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
Ajax请求总共有多少种Callback
2016/07/17 面试题
公证委托书大全
2014/04/04 职场文书
天地会口号
2014/06/17 职场文书
房屋租房协议书范本
2014/12/04 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书
python 提取html文本的方法
2021/05/20 Python
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫