使用PHPExcel操作Excel用法实例分析


Posted in PHP onMarch 26, 2015

本文实例分析了使用PHPExcel操作Excel用法。分享给大家供大家参考。具体分析如下:

PHPExcel下载地址:
http://www.codeplex.com/PHPExcel
http://www.phpexcel.net
开发包Tests目录有详细使用实例  支持中文,注意文件编码   文件保存为utf-8

1.header部分:

header("Content-Type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=sample.xls"); 
header("Pragma:no-cache"); 
header("Expires:0");

2.写excel:

//Include class 
require_once('Classes/PHPExcel.php'); 
require_once('Classes/PHPExcel/Writer/Excel2007.php'); 
$objPHPExcel = new PHPExcel(); 
 
//Set properties 设置文件属性 
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw"); 
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw"); 
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document"); 
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document"); 
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes."); 
$objPHPExcel->getProperties()->setKeywords("office 2007 openxml php"); 
$objPHPExcel->getProperties()->setCategory("Test result file"); 
 
//Add some data 添加数据 
$objPHPExcel->setActiveSheetIndex(0); 
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello');//可以指定位置 
$objPHPExcel->getActiveSheet()->setCellValue('A2', true); 
$objPHPExcel->getActiveSheet()->setCellValue('A3', false); 
$objPHPExcel->getActiveSheet()->setCellValue('B2', 'world!'); 
$objPHPExcel->getActiveSheet()->setCellValue('B3', 2); 
$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Hello'); 
$objPHPExcel->getActiveSheet()->setCellValue('D2', 'world!'); 
 
//循环 
for($i = 1;$i<200;$i++) { 
$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $i); 
$objPHPExcel->getActiveSheet()->setCellValue('B' . $i, 'Test value'); 
} 
 
//日期格式化 
$objPHPExcel->getActiveSheet()->setCellValue('D1', time()); 
$objPHPExcel->getActiveSheet()->getStyle('D1')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH); 
 
//Add comment 添加注释 
$objPHPExcel->getActiveSheet()->getComment('E11')->setAuthor('PHPExcel'); 
$objCommentRichText = $objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun('PHPExcel:'); 
$objCommentRichText->getFont()->setBold(true); 
$objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun("\r\n"); 
$objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun('Total amount on the current invoice, excluding VAT.'); 
 
//Add rich-text string 添加文字 可设置样式 
$objRichText = new PHPExcel_RichText( $objPHPExcel->getActiveSheet()->getCell('A18') ); 
$objRichText->createText('This invoice is '); 
$objPayable = $objRichText->createTextRun('payable within thirty days after the end of the month'); 
$objPayable->getFont()->setBold(true); 
$objPayable->getFont()->setItalic(true); 
$objPayable->getFont()->setColor( new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) ); 
$objRichText->createText(', unless specified otherwise on the invoice.'); 
 
//Merge cells 合并分离单元格 
$objPHPExcel->getActiveSheet()->mergeCells('A18:E22'); 
$objPHPExcel->getActiveSheet()->unmergeCells('A18:E22'); 
 
//Protect cells 保护单元格 
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);//Needs to be set to true in order to enable any worksheet protection! 
$objPHPExcel->getActiveSheet()->protectCells('A3:E13', 'PHPExcel'); 
 
//Set cell number formats 数字格式化 
$objPHPExcel->getActiveSheet()->getStyle('E4')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); 
$objPHPExcel->getActiveSheet()->duplicateStyle( $objPHPExcel->getActiveSheet()->getStyle('E4'), 'E5:E13' ); 
 
//Set column widths 设置列宽度 
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); 
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12); 
 
//Set fonts 设置字体 
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setName('Candara'); 
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(20); 
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true); 
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE); 
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE); 
 
//Set alignments 设置对齐 
$objPHPExcel->getActiveSheet()->getStyle('D11')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); 
$objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY); 
$objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); 
$objPHPExcel->getActiveSheet()->getStyle('A3')->getAlignment()->setWrapText(true); 
 
//Set column borders 设置列边框 
$objPHPExcel->getActiveSheet()->getStyle('A4')->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); 
$objPHPExcel->getActiveSheet()->getStyle('A10')->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); 
$objPHPExcel->getActiveSheet()->getStyle('E10')->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); 
$objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK); 
$objPHPExcel->getActiveSheet()->getStyle('E13')->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK); 
 
//Set border colors 设置边框颜色 
$objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getLeft()->getColor()->setARGB('FF993300'); 
$objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getTop()->getColor()->setARGB('FF993300'); 
$objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getBottom()->getColor()->setARGB('FF993300'); 
$objPHPExcel->getActiveSheet()->getStyle('E13')->getBorders()->getRight()->getColor()->setARGB('FF993300'); 
 
//Set fills 设置填充 
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); 
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setARGB('FF808080'); 
 
//Add a hyperlink to the sheet 添加链接 
$objPHPExcel->getActiveSheet()->setCellValue('E26', 'www.phpexcel.net'); 
$objPHPExcel->getActiveSheet()->getCell('E26')->getHyperlink()->setUrl('http://www.phpexcel.net'); 
$objPHPExcel->getActiveSheet()->getCell('E26')->getHyperlink()->setTooltip('Navigate to website'); 
$objPHPExcel->getActiveSheet()->getStyle('E26')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); 
 
//Add a drawing to the worksheet 添加图片 
$objDrawing = new PHPExcel_Worksheet_Drawing(); 
$objDrawing->setName('Logo'); 
$objDrawing->setDescription('Logo'); 
$objDrawing->setPath('./images/officelogo.jpg'); 
$objDrawing->setHeight(36); 
$objDrawing->setCoordinates('B15'); 
$objDrawing->setOffsetX(110); 
$objDrawing->setRotation(25); 
$objDrawing->getShadow()->setVisible(true); 
$objDrawing->getShadow()->setDirection(45); 
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); 
 
//Play around with inserting and removing rows and columns 
$objPHPExcel->getActiveSheet()->insertNewRowBefore(6, 10); 
$objPHPExcel->getActiveSheet()->removeRow(6, 10); 
$objPHPExcel->getActiveSheet()->insertNewColumnBefore('E', 5); 
$objPHPExcel->getActiveSheet()->removeColumn('E', 5); 
 
//Add conditional formatting 
$objConditional1 = new PHPExcel_Style_Conditional(); 
$objConditional1->setConditionType(PHPExcel_Style_Conditional::CONDITION_CELLIS); 
$objConditional1->setOperatorType(PHPExcel_Style_Conditional::OPERATOR_LESSTHAN); 
$objConditional1->setCondition('0'); 
$objConditional1->getStyle()->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED); 
$objConditional1->getStyle()->getFont()->setBold(true); 
 
//Set autofilter 自动过滤 
$objPHPExcel->getActiveSheet()->setAutoFilter('A1:C9'); 
 
//Hide "Phone" and "fax" column 隐藏列 
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setVisible(false); 
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false); 
 
//Set document security 设置文档安全 
$objPHPExcel->getSecurity()->setLockWindows(true); 
$objPHPExcel->getSecurity()->setLockStructure(true); 
$objPHPExcel->getSecurity()->setWorkbookPassword("PHPExcel"); 
 
//Set sheet security 设置工作表安全 
$objPHPExcel->getActiveSheet()->getProtection()->setPassword('PHPExcel'); 
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);// This should be enabled in order to enable any of the following! 
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true); 
$objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true); 
$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true); 
 
//Calculated data 计算 
echo 'Value of B14 [=COUNT(B2:B12)]: ' . $objPHPExcel->getActiveSheet()->getCell('B14')->getCalculatedValue() . "\r\n"; 
 
//Set outline levels 
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1); 
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setVisible(false); 
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setCollapsed(true); 
 
//Freeze panes 
$objPHPExcel->getActiveSheet()->freezePane('A2'); 
 
//Rows to repeat at top 
$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); 
 
//Set data validation 验证输入值 
$objValidation = $objPHPExcel->getActiveSheet()->getCell('B3')->getDataValidation(); 
$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_WHOLE ); 
$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_STOP );
$objValidation->setAllowBlank(true);
$objValidation->setShowInputMessage(true);
$objValidation->setShowErrorMessage(true);
$objValidation->setErrorTitle('Input error');
$objValidation->setError('Number is not allowed!');
$objValidation->setPromptTitle('Allowed input');
$objValidation->setPrompt('Only numbers between 10 and 20 are allowed.'); 
$objValidation->setFormula1(10);
$objValidation->setFormula2(20);
$objPHPExcel->getActiveSheet()->getCell('B3')->setDataValidation($objValidation);
 
//Create a new worksheet, after the default sheet 创建新的工作标签
$objPHPExcel->createSheet();
$objPHPExcel->setActiveSheetIndex(1);
 
//Set header and footer. When no different headers for odd/even are used, odd header is assumed. 页眉页脚
$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&C&HPlease treat this document as confidential!');
$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N');
 
//Set page orientation and size 方向大小
$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
 
//Rename sheet 重命名工作表标签 
$objPHPExcel->getActiveSheet()->setTitle('Simple');
 
//Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
 
//Save Excel 2007 file 保存 
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
 
//Save Excel 5 file 保存 
require_once('Classes/PHPExcel/Writer/Excel5.php'); 
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 
$objWriter->save(str_replace('.php', '.xls', __FILE__));
 
//1.6.2新版保存 
require_once('Classes/PHPExcel/IOFactory.php');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save(str_replace('.php', '.xls', __FILE__));

3.读excel

//Include class 
require_once('Classes/PHPExcel/Reader/Excel2007.php'); 
$objReader = new PHPExcel_Reader_Excel2007; 
$objPHPExcel = $objReader->load("05featuredemo.xlsx");

4.读写csv

require_once("05featuredemo.inc.php");
require_once('Classes/PHPExcel/Writer/CSV.php');
require_once('Classes/PHPExcel/Reader/CSV.php');
require_once('Classes/PHPExcel/Writer/Excel2007.php'); 
//Write to CSV format 写 
$objWriter = new PHPExcel_Writer_CSV($objPHPExcel);
$objWriter->setDelimiter(';'); 
$objWriter->setEnclosure(''); 
$objWriter->setLineEnding("\r\n"); 
$objWriter->setSheetIndex(0); 
$objWriter->save(str_replace('.php', '.csv', __FILE__));
//Read from CSV format 读 
$objReader = new PHPExcel_Reader_CSV();
$objReader->setDelimiter(';'); 
$objReader->setEnclosure(''); 
$objReader->setLineEnding("\r\n");
$objReader->setSheetIndex(0); 
$objPHPExcelFromCSV = $objReader->load(str_replace('.php', '.csv', __FILE__));
//Write to Excel2007 format 
$objWriter2007 = new PHPExcel_Writer_Excel2007($objPHPExcelFromCSV);
$objWriter2007->save(str_replace('.php', '.xlsx', __FILE__));

5.写html

require_once("05featuredemo.inc.php"); 
require_once('Classes/PHPExcel/Writer/HTML.php');
//Write to HTML format 
$objWriter = new PHPExcel_Writer_HTML($objPHPExcel);
$objWriter->setSheetIndex(0); 
$objWriter->save(str_replace('.php', '.htm', __FILE__));

6.写pdf

require_once("05featuredemo.inc.php");
require_once('Classes/PHPExcel/IOFactory.php');
//Write to PDF format
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
$objWriter->setSheetIndex(0);
$objWriter->save(str_replace('.php', '.pdf', __FILE__));
//Echo memory peak usage
echo date('H:i:s')." Peak memory usage: ".(memory_get_peak_usage(true) / 1024 / 1024)." MB\r\n";

 
希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
相对路径转化成绝对路径
Apr 10 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
解析dedeCMS验证码的实现代码
Jun 07 PHP
PHP函数getenv简介和使用实例
May 12 PHP
ThinkPHP内置jsonRPC的缺陷分析
Dec 18 PHP
php 无限级分类 获取顶级分类ID
Mar 13 PHP
Thinkphp微信公众号支付接口
Aug 04 PHP
PHP count_chars()函数讲解
Feb 14 PHP
PHP抽象类与接口的区别详解
Mar 21 PHP
phpStorm+XDebug+chrome 配置详解
Apr 01 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
Apr 10 PHP
Laravel使用Queue队列的技巧汇总
Sep 02 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
Mar 26 #PHP
php实现RSA加密类实例
Mar 26 #PHP
PHP中实现crontab代码分享
Mar 26 #PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
Mar 26 #PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
Mar 25 #PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 #PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
Mar 25 #PHP
You might like
PHP 防注入函数(格式化数据)
2011/08/08 PHP
php加速器eAccelerator的配置参数、API详解
2014/05/05 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
Laravel服务容器绑定的几种方法总结
2020/06/14 PHP
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
基于Jquery的$.cookie()实现跨越页面tabs导航实现代码
2011/03/03 Javascript
JavaScript中的关联数组问题
2015/03/04 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
使用jQuery实现简单的tab框实例
2017/08/22 jQuery
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
每周一练 之 数据结构与算法(Stack)
2019/04/16 Javascript
浅析vue插槽和作用域插槽的理解
2019/04/22 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
VUE DEMO之模拟登录个人中心页面之间数据传值实例
2019/10/31 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
[01:08:56]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第一场 2月7日
2021/03/11 DOTA
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
python3中os.path模块下常用的用法总结【推荐】
2018/09/16 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
Python3 读取Word文件方式
2020/02/13 Python
Python打印不合法的文件名
2020/07/31 Python
用css3实现转换过渡和动画效果
2020/03/13 HTML / CSS
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
String和StringBuffer的区别
2015/08/13 面试题
2014年保卫部工作总结
2014/11/21 职场文书
2015年见习期工作总结
2014/12/12 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
自我检讨书怎么写
2015/05/07 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
学校运动会感想
2015/08/10 职场文书