最近公司后台管理系统需求,要用PHP导出excel表格数据,所以特整理了一下常用的方法供大家参考:

PHPExcel扩展包地址:https://github.com/wanqianworld/phpexcel-1.8

大致的分为几个部分:

一、导出的方法及步骤

1.引入PHPExcel文件:require_once("../Classes/PHPExcel.php");
2.实例化PHPExcel:$ObjPHPExcel = new PHPExcel();
3.获取当前工作sheet:$ObjPHPExcel->getACtiveSheet();
4.给当前工作表设置名称:$ObjPHPExcel->setTitle('sheet表名称');
5.添加数据,赋值:$ObjPHPExcel->setCellValue('单元格坐标','值');
6.按照指定格式生成excel文件: $ObjPHPExcel->PHPExcel_IOFactory::createWriter($ObjPHPExcel,'Excal5');
7.保存Excel文件:$ObjPHPExcel->save('保存路径及文件名');
8.如果要将生成的Excel文件输出到浏览器:Excel5需要添加以下代码:header("Content-type:application/vnd.ms-excel");//输出Excel03文件header("Content-Disposition:attachment;filename=test.xls');header("Content-Control:max-age = 0");$ObjPHPExcel->save("php://output");Excel7需要添加以下代码:header("Content-type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");//输出Excel07文件header("Content-Disposition:attachment;filename=test.xlsx');//浏览器输出文件名称header("Content-Control:max-age = 0");//禁止浏览器缓存$ObjPHPExcel->save("php://output");

二、Excel样式控制

1.合并单元格:$ObjPHPExcel->getActiveSheet()->mergeCells('A18:E22');
2.拆分单元格:$ObjPHPExcel->getActiveSheet()->unmergeCells('A18:E22');
3.设置默认单元格水平方向居中:$ObjPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal( PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
4.设置默认单元格垂直方向居中:$ObjPHPExcel->getDefaultStyle()->getAlignment()->setvertical( PHPExcel_Style_Alignment::VERTICAL_CENTER);
5.设置默认字体样式:字体类型: $ObjPHPExcel->getDefaultStyle()->getFont()->setName('微软雅黑');字体大小:$ObjPHPExcel->getDefaultStyle()->getFont()->setSize(14);
6.设置指定字体样式:$ObjPHPExcel->getStyle('A18:E22')->getFont()->setName('微软雅黑');字体大小:$ObjPHPExcel->getStyle('A18:E22')->getFont()->setSize(14);
7.设置背景颜色:填充方式(完全填充):$ObjPHPExcel->getStyle('B2')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);填充颜色:$objPHPExcel->getStyle('B2')->getFill()->getStartColor()->setARGB('FFFF0000');
8.设置边框:$styleArray = array('borders' => array('outline' => array('style' => PHPExcel_Style_Border::BORDER_THICK,'color' => array('argb' => 'FFFF0000'),),),);$objWorksheet->getStyle('B2:G8')->applyFromArray($styleArray);调用getStyle()方法的,参数都可以通过数组的方式传入。
9.自动换行:开启自动换行:$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setWrapText(true);在需要换行的值中添加\n,然后才能自动换行:$objPHPExcel->getActiveSheet()->getCell('A1')->setValue("hello\nworld");
10.设置单元格格式:设置单元格格式为字符串(解决身份证活手机号格式为科学记数法):$objPHPExcel->getActiveSheet()->getCell('A1')->setValueExplicit('25', PHPExcel_Cell_DataType::TYPE_STRING)

三、添加图片、标注

1.添加图片:$ObjSheet = $ObjPHPExcel->getActiveSheet();获取当前sheet表$ObjDrawing = new PHPExcel_WorkSheet_Drawing();//获取一个图片的操作对象$ObjDrawing->setPath("图片路径");//加载图片路径$ObjDrawing->setCoordinates('F5');//设置图片插入左上角坐标$ObjDrawing->setWidth(500);//设置图片宽度(等比缩放)$ObjDrawing->setHeight(100);//设置图片高度(等比缩放)如果宽度和高度同时设置,图片会等比缩放两次,这里需要注意$ObjDrawing->setOffsetX(20);//设置单元格内偏移量,不能超过单元格宽度,否则无效$ObjDrawing->setOffsetY(20);//设置单元格内偏移量,不能超过单元格高度,否则无效$ObjDrawing->setWorkSheet($ObjSheet);//将图片插入到sheet中
2.添加丰富文字块(即单元格内文字设置不同的样式)$ObjRichtext = new PHPExcel_RichText();//获得一个文字块操作对象$ObjRichtext->createText('文字内容');//添加正常的文字$ObjStyleFont = $ObjRichtext->createTextRun("需要修改格式的文字内容");//添加需要修改样式的文字$ObjStyleFont->getFont()->setSize(16)->setBold(True);//设置文字样式$ObjRichtext->createText('文字内容');//添加正常的文字$ObjSheet->getCell('A4')->setValue($ObjRichtext);//将文字块插入sheet中
3.添加批注:(注:合并单元格添加注释功能Excel2007以上才支持)$ObjSheet->getComment("F4")->gettext()->createTextRun('批注内容');
4.超链接:$ObjSheet->setCellValue('B1','百度');$ObjSheet->getCell('B1')->getHyperlink()->setUrl("https://www.baidu.com");

四、生成图形报表(折线、饼状、柱状、区域等等)

这块的内容比较多,日常用到可能比较少,我就没有给大家总结,不过可以详见PHPExcel扩展包中Examples目录下的实例PHP文件,有很多demo,注释也很清楚。

五、Excel导入文件(全部加载)

1.引入PHPExcel导出文件:require_once("../Classes/PHPExcel/IOFactory.php");
2.加载需要Excel的Excel文件:$ObjPHPExcel->PHPExcel_IOFactory::load($filename);
3.获取excel文件中有多少个sheet:$sheetCount = $ObjPHPExcel->getSheetCount();
4.遍历sheet,将所有sheet中的数据组成数组:for($i=0;$i<$sheetCount;$i++){$dataArray = $ObjPHPExcel->getSheet($i)->toArray();}
5.上边方法只能获取Excel中所有数据,如过需要筛选数据,方法如下:foreach($ObjPHPExcel->getWorksheetIterator  as  $sheet){foreach($ObjPHPExcel->getRowIterator  as  $row ){if($row->getRowIndex() < 3){continue;}//获取行号,只获取第三行之后的数据foreach($ObjPHPExcel->getCellIterator  as $cell){$data = $cell->getValue();//获取单元格数据}}}

六、Excel导入文件(部分加载)

1.获取excel文件类型(xls\xlsx...):$file_type = PHPExcel_IOFactory::identify($filename);
2.获取文件读取操作对象:$objReader = PHPExcel_IOFactory::createReader($file_type);
3.指定需要加载sheet的名称:$sheetName = arrat('sheet1','sheet2');
4.根据sheet名称加载数据:$objReader->setLoadSheetsOnly($sheetName);

必须要注意的的是PHPExcel对内存占用很大,在不进行特殊设置的情况下,phpExcel将读取的单元格信息保存在内存中,一个单元格大概占用1KB。

为了应对内存占用的问题:

1.可以使用PHPExcel_Settings::setCacheStorageMethod() 来设置不同的缓存方式,已达到降低内存消耗的目的!需要注意的是:必须在new PHPExcel对象之前添加。
2.将单元格数据序列化后保存在内存中     PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized;
3.将单元格序列化后再进行Gzip压缩,然后保存在内存中     PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;
4.缓存在临时的磁盘文件中,速度可能会慢一些     PHPExcel_CachedObjectStorageFactory::cache_to_discISAM;
5.保存在php://tempPHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
6.保存在memcache中     PHPExcel_CachedObjectStorageFactory::cache_to_memcache。

举两个应对内存占用问题的小例子:

eg1:$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;//选择缓存方式$cacheSettings = array('memoryCacheSize'=>'16MB');//缓存设置PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);//设置缓存$objPHPExcel = new PHPExcel();
eg2:$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_memcache;//选择缓存方式$cacheSettings = array('memcacheServer' => 'localhost','memcachePort' => 11211,'cacheTime' => 600);//memcache缓存设置PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);//设置缓存

这些基本能满足日常开发需要,如果要更复杂的需求,大家可以详见PHPExcel扩展包中Examples目录下的实例PHP文件,有很多demo,注释也很清楚。或者翻阅PHPExcel的官方文档。

PHPExcel导入导出常用方法总结相关推荐

  1. 【PHP】【组件使用】【phpexcel】【phpexcel导入导出】

    [PHP][组件使用][phpexcel][phpexcel导入导出] 一.前提 PHP 7.3 tp3.2 tp5版本及以上的可能需要修改 二.phpexcel包引入 composer requir ...

  2. thinkphp5 使用PHPExcel 导入导出

    首先下载PHPExcel类.网上很多,自行下载. 然后把文件放到vendor文件里面. 一般引用vendor里面的类或者插件用vendor(); 里面加载的就是vendor文件,然后想要加载哪个文件, ...

  3. 黄聪:超实用的PHPExcel[导入][导出]实现方法总结

    首先需要去官网https://github.com/PHPOffice/PHPExcel/下载PHPExcel,下载后只需要Classes目录下的文件即可. 1.PHPExcel导出方法实现过程 /* ...

  4. thinkphp6 + phpexcel 导入导出数据,设置特殊表格

    第一步:安装excel,使用composer安装,我的是在window下,直接cmd切换到项目下面,输入 composer require phpoffice/phpexcel,然后就等待安装完成.如 ...

  5. phpexcel导入导出(轻量) 淘宝导入

    excel单元格数字变成字符串方法 '1001010002400000,数值前加单引号 当excel文件中的数据设置过,导入的数据和excel显示的不同,单个修改数据个单元格格式又很麻烦,这时把exc ...

  6. PHPEXCEL 20万数据导入导出(一)

    本片博客记录了一次实际开发中的需要使用PHPExcel导入导出大量数据(20万)的解决过程. 复盘优化自己的项目,好处在于,一旦已找到好的方法,好的代码,你就不可能再使用差的代码 场景描述:开发环境: ...

  7. php Excel导入导出 , 及看及用

    phpExcel导入导出 1. 下载PHPExcel的SDK,下载地址: https://github.com/PHPOffice/PHPExcel 将SDK解压之后的Class文件拷贝到自己的项目. ...

  8. PHPExcel处理导入导出图片,链接

    PHPExcel是一个非常强大的PHP表格处理模块,提供一组PHP编程语言,它允许您编写和读取不同的电子表格文件格式,如Excel(纸). xls,Excel 2007(OfficeOpenXML). ...

  9. PHP利用phpExcel实现Excel数据的导入导出

    phpExcel包的下载地址:http://download.csdn.net/detail/kesixin/9920920 首先先说一下,这段例程是使用在Thinkphp的开发框架上,要是使用在其他 ...

最新文章

  1. Ubuntn删除软件
  2. 【数据结构】单链表的应用(C语言)
  3. 图Graph--拓扑排序(Topological Sorting)
  4. c#自动更新+安装程序的制作
  5. 竖流式沉淀池集水槽设计计算_竖流式沉淀池的设计
  6. 赋予用户最高权限的一点“挫折”
  7. 如何安装mysql 5.6_如何通过编译工具安装mysql 5.6
  8. nt服务器需要的协议,构建没有NT服务器的NT域
  9. x86汇编语言(2) 认识8086处理器
  10. 蓝桥杯 ALGO-141 算法训练 P1102
  11. 互联网行业值得关注的10个公众号推荐(附pdf下载)
  12. 【OpenCV实战】简洁易懂的车牌号识别Python+OpenCV实现“超详解”(含代码)
  13. Js 嵌套if选择结构
  14. iOS 安装包瘦身(下篇)
  15. 云杰恒指:9.4恒指期货实盘指导交易复盘
  16. 'BMap' is not defined 解决方案,亲测有效
  17. 单词数 HDU - 2072(字典树模板题amp;stl)
  18. ChemDraw加键的两种方法
  19. 企业微信发送图片失败
  20. Gradle安装及配置国内镜像

热门文章

  1. vs2013(所有版本)-产品密钥
  2. 服务器集群及其优缺点!
  3. Android maxEms和maxLength
  4. 想想都脊背一凉,细思极恐,大家提早醒悟
  5. 递归调用:有五个学生坐在一起,问第五个学生多少岁了,他说比第四个学生大两岁,问他第四个学生岁数,他说比第三个学生大两岁....... 第一个学生是n岁,请问第五个学生多少岁?
  6. fread函数和fwrite函数详解
  7. python解决数学建模发电商机组调度问题
  8. KPPW仿一品威客威客模板
  9. 如何实现uniapp热区链接
  10. 解决maven项目中-Dmaven.multiModuleProjectDirectory报错问题