好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHPExcel生成和读取Excel文件实例程序 - php高级应用

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

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测试数据>    * @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 />" ;      }  }    ?>  

查看更多关于PHPExcel生成和读取Excel文件实例程序 - php高级应用的详细内容...

  阅读:47次