在之前有写过一篇文章讲述了使用PHP快速生成excel表格文件并下载,这种方式生成Excel文件,生成速度很快,但是有缺点是:
1.单纯的生成Excel文件,生成的文件没有样式,单元格属性(填充色,宽度,高度,边框颜色...)不能自定义;
2.生成的文件虽然可以打开,但是兼容性很差,每次打开,都会报一个警告:

今天使用一个第三方的SDK(PHPExcel)实现Excel文件的导入和导出。

准备工作:
1.下载PHPExcel的SDK,下载地址:https://github.com/PHPOffice/PHPExcel。

2.将SDK解压之后的Class文件拷贝到自己的项目。

一.Excel文件读取

function excelToArray(){  require_once dirname(__FILE__) . '/Lib/Classes/PHPExcel/IOFactory.php';  //加载excel文件  $filename = dirname(__FILE__).'/result.xlsx';  $objPHPExcelReader = PHPExcel_IOFactory::load($filename);    $sheet = $objPHPExcelReader->getSheet(0);        // 读取第一个工作表(编号从 0 开始)  $highestRow = $sheet->getHighestRow();           // 取得总行数  $highestColumn = $sheet->getHighestColumn();     // 取得总列数  $arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z');  // 一次读取一列  $res_arr = array();  for ($row = 2; $row <= $highestRow; $row++) {  $row_arr = array();  for ($column = 0; $arr[$column] != 'F'; $column++) {  $val = $sheet->getCellByColumnAndRow($column, $row)->getValue();  $row_arr[] = $val;  }  $res_arr[] = $row_arr;  }  return $res_arr;
}  

或者:

function excelToArray(){  require_once dirname(__FILE__) . '/Lib/Classes/PHPExcel/IOFactory.php';  //加载excel文件  $filename = dirname(__FILE__).'/result.xlsx';  $objPHPExcelReader = PHPExcel_IOFactory::load($filename);    $reader = $objPHPExcelReader->getWorksheetIterator();  //循环读取sheet  foreach($reader as $sheet) {  //读取表内容  $content = $sheet->getRowIterator();  //逐行处理  $res_arr = array();  foreach($content as $key => $items) {  $rows = $items->getRowIndex();              //行  $columns = $items->getCellIterator();       //列  $row_arr = array();  //确定从哪一行开始读取  if($rows < 2){  continue;  }  //逐列读取  foreach($columns as $head => $cell) {  //获取cell中数据  $data = $cell->getValue();  $row_arr[] = $data;  }  $res_arr[] = $row_arr;  }  }  return $res_arr;
}  

两种方法均可将表格数据转化为数组,然后哦再进行相关的操作就简单了。

二.Excel文件导出

/** * 创建(导出)Excel数据表格 * @param  array   $list        要导出的数组格式的数据 * @param  string  $filename    导出的Excel表格数据表的文件名 * @param  array   $indexKey    $list数组中与Excel表格表头$header中每个项目对应的字段的名字(key值) * @param  array   $startRow    第一条数据在Excel表格中起始行 * @param  [bool]  $excel2007   是否生成Excel2007(.xlsx)以上兼容的数据表 * 比如: $indexKey与$list数组对应关系如下: *     $indexKey = array('id','username','sex','age'); *     $list = array(array('id'=>1,'username'=>'YQJ','sex'=>'男','age'=>24)); */
function exportExcel($list,$filename,$indexKey,$startRow=1,$excel2007=false){  //文件引入  require_once APP_ROOT.'/Api/excel/PHPExcel.php';  require_once APP_ROOT.'/Api/excel/PHPExcel/Writer/Excel2007.php';  if(empty($filename)) $filename = time();  if( !is_array($indexKey)) return false;  $header_arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z');  //初始化PHPExcel()  $objPHPExcel = new PHPExcel();  //设置保存版本格式  if($excel2007){  $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);  $filename = $filename.'.xlsx';  }else{  $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);  $filename = $filename.'.xls';  }  //接下来就是写数据到表格里面去  $objActSheet = $objPHPExcel->getActiveSheet();  //$startRow = 1;  foreach ($list as $row) {  foreach ($indexKey as $key => $value){  //这里是设置单元格的内容  $objActSheet->setCellValue($header_arr[$key].$startRow,$row[$value]);  }  $startRow++;  }  // 下载这个表格,在浏览器输出  header("Pragma: public");  header("Expires: 0");  header("Cache-Control:must-revalidate, post-check=0, pre-check=0");  header("Content-Type:application/force-download");  header("Content-Type:application/vnd.ms-execl");  header("Content-Type:application/octet-stream");  header("Content-Type:application/download");;  header('Content-Disposition:attachment;filename='.$filename.'');  header("Content-Transfer-Encoding:binary");  $objWriter->save('php://output');
}  

导出文件,还可以设置模板

function exportExcel($list,$filename,$indexKey=array()){  require_once dirname(__FILE__) . '/Lib/Classes/PHPExcel/IOFactory.php';  require_once dirname(__FILE__) . '/Lib/Classes/PHPExcel.php';  require_once dirname(__FILE__) . '/Lib/Classes/PHPExcel/Writer/Excel2007.php';  $header_arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z');  //$objPHPExcel = new PHPExcel();                        //初始化PHPExcel(),不使用模板  $template = dirname(__FILE__).'/template.xls';          //使用模板  $objPHPExcel = PHPExcel_IOFactory::load($template);     //加载excel文件,设置模板  $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);  //设置保存版本格式  //接下来就是写数据到表格里面去  $objActSheet = $objPHPExcel->getActiveSheet();  $objActSheet->setCellValue('A2',  "活动名称:江南极客");  $objActSheet->setCellValue('C2',  "导出时间:".date('Y-m-d H:i:s'));  $i = 4;  foreach ($list as $row) {  foreach ($indexKey as $key => $value){  //这里是设置单元格的内容  $objActSheet->setCellValue($header_arr[$key].$i,$row[$value]);  }  $i++;  }  // 1.保存至本地Excel表格  //$objWriter->save($filename.'.xls');  // 2.接下来当然是下载这个表格了,在浏览器输出就好了  header("Pragma: public");  header("Expires: 0");  header("Cache-Control:must-revalidate, post-check=0, pre-check=0");  header("Content-Type:application/force-download");  header("Content-Type:application/vnd.ms-execl");  header("Content-Type:application/octet-stream");  header("Content-Type:application/download");;  header('Content-Disposition:attachment;filename="'.$filename.'.xls"');  header("Content-Transfer-Encoding:binary");  $objWriter->save('php://output');
}  

先弄一个excel模板

然后使用该模板导出数据

除此之外还可以对表格属性做很多自定义。感兴趣的自己看看吧!

转: https://blog.csdn.net/a8240357/article/details/80758222

转载于:https://www.cnblogs.com/fps2tao/p/10723109.html

使用PHPExcel实现Excel文件的导入和导出(模板导出)相关推荐

  1. tp3.2.3运用phpexcel将excel文件导入mysql数据库

    1,下载PHPExcel 2,配置将下载好的PHPExcel文件与PHPExcel.php 放到thinkphp 根目录 include/Library/Org/Util/下面 3,同时将PHPExc ...

  2. PHPExcel读取excel文件

    之前的博文已经对PHPExcel导出excel文件做了简单的总结,现对他读取excel做以下总结.(对数据量不会很大的建可以采用web直接用此方法读取,如果数据量会很大的话,还是建议web只做上传功能 ...

  3. 使用phpexcel将excel表格的导入导出

    使用phpexcel将excel表格的导入数据库 1–使用composer安装phpexcel包 composer require phpoffice/phpexcel -vvv 2-控制器 //导入 ...

  4. 将Excel文件数据库导入SQL Server

    将Excel文件数据库导入SQL Server的三种方案//方案一: 通过OleDB方式获取Excel文件的数据,然后通过DataSet中转到SQL Server openFileDialog = n ...

  5. 微信小程序 -- 数据库数据excel文件批量导入

    一.excel文件批量导入数据到数据库 1.创建node.js函数upload,点击upload右键外部终端中安装类库 npm install node-xlsx 2.云函数代码 const clou ...

  6. php写excel文件_利用PHPExcel实现Excel文件的写入和读取

    作为一个原本的Java党,用过PHP才知道,原来对于Excel文件的写入和读取原来可以这么简单! 利用PHP实现对于Excel的读取,主要借助于PHPExcel插件来完成. PHPExcel下载地址: ...

  7. excel 服务器怎么添加文件,本地的Excel文件怎么导入到远端服务器的临时表中

    本地的Excel文件如何导入到远端服务器的临时表中? 现在我有一个excel文件,我想把里面的数据导入到远端服务器中去,但是那边规定不能修改数据库的结构,只能用临时表,那么请问大家,我怎么才能把exc ...

  8. ABAP 程序完成EXCEL文件的导入导出,OLE技术的应用

    今天主要学习了使用微软的OLE技术,用ABAP程序完成excel文件的导入导出处理. (一)常用的OLE函数: CALL METHOD  ,  CALL OBJECT ,   FREE OBJECT ...

  9. easyexcel导入时读不到数据_SpringBoot中EasyExcel实现Excel文件的导入导出

    前言 在我们日常的开发过程中经常会使用Excel文件的形式来批量地上传下载系统数据,我们最常用的工具是Apache poi,但是如果数据到底上百万时,将会造成内存溢出的问题,那么我们怎么去实现百万数据 ...

最新文章

  1. 完整SQL分页存储过程(支持多表联接)
  2. springcloud 文件服务器,SpringCloud传文件
  3. 微软翻译api的使用介绍和注意事项
  4. pythonsqlite3模糊_Python编写通讯录通过数据库存储实现模糊查询功能
  5. 漫画:给女朋友介绍什么是 “元宇宙” ?
  6. oel6mysql_OEL6.5_X86平台部署Oracle 11gR2 RAC并配置ACFS
  7. 检测磁盘是否有问题的方法
  8. Redis数据类型及使用场景
  9. PID算法 旋转倒立摆与平衡车的区别。此贴后边会更新。
  10. 安全测试-Drozer安全测试框架实践记录篇
  11. 西南交通大学matlab实验任务,西南交通大学实验竞赛月——数学建模竞赛安排
  12. 数字图像处理实验之Matlab对图像的基本处理
  13. 网页提示504 gateway time-out是什么意思?如何解决?
  14. 计算机网络技术表白,网络表白的经典句子
  15. 信息的安全传输(JAVA实现信息的安全传输工具)
  16. PHP志愿者协会报名系统的设计与实现 毕业设计-附源码201524
  17. python networkx 边权重_Python / NetworkX:通过边缘发生频率向边缘添加权重
  18. 关于Inziu Iosevka和Sarasa Gothic字体
  19. 支持批量图片转文字的免费【OCR】文字识别工具,支持截图识别和批量图片识别,开源工具,速度快,准确度高,免费OCR,开源软件
  20. 王者荣耀s15服务器维护,王者荣耀s15赛季更新内容_体验服s15赛季新模式英雄调整汇总...

热门文章

  1. mysql中存储过程定义
  2. 十 全局结果页面的配置
  3. 暑假第二周总结(2018.7.16——7.22)
  4. Django-session操作
  5. 用sed替换文件中的空格
  6. 利用JDK1.5的工具对远程的Java应用程序进行监测(摘录)
  7. *关于C++堆和栈的理解
  8. django 中的用户身份验证和 session 的关系
  9. 022 - cocos creator 3D
  10. Hbuilder启动夜神游模拟器失败,解决方案