加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHPExcel生成和读取Excel文件实例程序

发布时间:2022-02-09 16:25:00 所属栏目:PHP教程 来源:互联网
导读:PHPExcel是一个非常方便生成Excel格式文件的类,官方下载包中带有大量如何生成各种样式excel文件的示例,但没有一个读取Excel文件的完整例子.Xiaoqiang根据网上的资料,整理了一份简单读取Excel文件的例子 在网站的管理后台经常会使用到报表的生成和读取,CSV
  PHPExcel是一个非常方便生成Excel格式文件的类,官方下载包中带有大量如何生成各种样式excel文件的示例,但没有一个读取Excel文件的完整例子.Xiaoqiang根据网上的资料,整理了一份简单读取Excel文件的例子
 
  在网站的管理后台经常会使用到报表的生成和读取,CSV和Excel都是常用的报表格式,CSV相对来说比较简单,如果大家有疑问我会相继发布一些CSV的实例,这里主要介绍用PHP 来生成和读取Excel文件。
 
  要执行下面的函数,首先要引入一个类库:PHPExcel,PHPExcel是一个强大的PHP类库,用来读写不同的文件格式,比如说Excel 2007,PDF格式,HTML格式等等,这个类库是建立在Microsoft's OpenXML和PHP 的基础上的,对Excel提供的强大的支持,比如设置工作薄,字体样式,图片以及边框等等,下面来看看它是如何读写Excel文件的:
 
  首先来看如果生成Excel文件:
 
  下面这代码中函数arrayToExcel的功能是把一个二维数组的数据生成一个excel文件,并且保存在服务器上,代码如下:
 
  require_once 'Classes/PHPExcel/Reader/Excel2007.php';
  require_once 'Classes/PHPExcel/Reader/Excel5.php';
  include 'Classes/PHPExcel/IOFactory.php';
  function arrayToExcel($data){
  $objPHPExcel = new PHPExcel();
  $objPHPExcel->setActiveSheetIndex(0);
  $objPHPExcel->getActiveSheet()->setTitle('firstsheet');
  $objPHPExcel->getDefaultStyle()->getFont()->setName('Arial');
  $objPHPExcel->getDefaultStyle()->getFont()->setSize(10);
  //add data
  $i = 2;
  foreach ($data as $line){
  $objPHPExcel->getActiveSheet()->setCellValue('A'.$i, $line['From']);
  $objPHPExcel->getActiveSheet()->getCell('A'.$i)->setDataType('n');
  $objPHPExcel->getActiveSheet()->setCellValue('B'.$i, $line['To']);
  $objPHPExcel->getActiveSheet()->getCell('B'.$i)->setDataType('n');
  $i++;
  }
  $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  $file = 'excel.xls';
  $objWriter->save($file);
  }  
  如果你不希望保存在服务器上,希望生成以后直接下载到客户端,可以在输出文件的时候加入下面的代码,而不使用 $objWriter->save($file);代码如下:
 
  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="excel.xls"');
  header("Content-Transfer-Encoding:binary");
  $objWriter->save('php://output');
  接下来看一个读取Excel文件内容的实例,下面这代码中函数excelToArray的功能是把一个excel里的内容重新整理放到一个数组了,代码如下:
 
  require_once 'Classes/PHPExcel.php';
  require_once 'Classes/PHPExcel/IOFactory.php';
  function excelToArray($file){
  $objReader = PHPExcel_IOFactory::createReader('Excel5');
  $objReader->setReadDataOnly(true);
  $objPHPExcel = $objReader->load($file);
  $objWorksheet = $objPHPExcel->getActiveSheet();
  $highestRow = $objWorksheet->getHighestRow();
  $highestColumn = $objWorksheet->getHighestColumn();
  $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
  $excelData = array();
  for ($row = 2; $row <= $highestRow; ++$row) {
  for ($col = 0; $col <= $highestColumnIndex; ++$col) { $excelData[$row][] = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
  }
  }
  return $excelData;
  }  
  精简办法,代码如下:
 
  <?php
  /**
   *
   * @copyright 2007-2012 Xiaoqiang.
   * @author Xiaoqiang.Wu <jamblues@gmail.com>
   * @version 1.01
   */
  
  error_reporting(E_ALL);
  
  date_default_timezone_set('Asia/ShangHai');
  
  /** PHPExcel_IOFactory */
  require_once '../Classes/PHPExcel/IOFactory.php';
  
  
  // Check prerequisites
  if (!file_exists("31excel5.xls")) {
      exit("not found 31excel5.xls.n");
  }
  
  $reader = PHPExcel_IOFactory::createReader('Excel5'); //设置以Excel5格式(Excel97-2003工作簿)
  $PHPExcel = $reader->load("31excel5.xls"); // 载入excel文件
  $sheet = $PHPExcel->getSheet(0); // 读取第一??工作表
  $highestRow = $sheet->getHighestRow(); // 取得总行数
  $highestColumm = $sheet->getHighestColumn(); // 取得总列数
  
  /** 循环读取每个单元格的数据 */
  for ($row = 1; $row <= $highestRow; $row++){//行数是以第1行开始
      for ($column = 'A'; $column <= $highestColumm; $column++) {//列数是以A列开始
          $dataset[] = $sheet->getCell($column.$row)->getValue();
          echo $column.$row.":".$sheet->getCell($column.$row)->getValue()."<br />";
      }
  }
  
  ?>  
 

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读