好得很程序员自学网

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

PHPEXCEL的用法与简介 - php高级应用

PHPEXCEL的用法与简介

PHPEXCEL是一个用来生成excel的php插件,他可以很方便的对excel数据进行操作,如:生成excel,修改excel数据等等.

一、PHPEXCEL简介

PHPEXCEL提供了一系列的API,能够解析与生成excel,pdf之类的文档.

PHPEXCEL虽然强大,不过使用起来相对有些繁锁,如果需要输出较为复杂格式时,是一个不错的选择,可以到官方下载到源码.

二、PHPEXCEL部分函数

设置当前的工作簿,返回该工作簿对象:

$excelSheet = $excel->setActiveSheetIndex(0);

合并单元格,返回该单元格对象,以下示例即合并A列第一行与第二行所在单元格:

$excelSheet->mergeCells('A1:A2');

设置单元格的值,参数:单元格名称,值:

$excelSheet ->setCellValue( 'A1' ,  '字符串内容' );  $excelSheet ->setCellValue( 'A2' , 26);  //数值    $excelSheet ->setCellValue( 'A3' , true);  //布尔值    $excelSheet ->setCellValue( 'A4' ,  '=SUM(A2:A2)' );  //公式  

phpexcel用法介绍,代码如下:

include  ‘PHPExcel.php’;     include  ‘PHPExcel/Writer/Excel2007.php’;     //或者include ‘PHPExcel/Writer/Excel5.php’; 用于输出.xls的     创建一个excel     $objPHPExcel  =  new  PHPExcel();    保存excel—2007格式     $objWriter  =  new  PHPExcel_Writer_Excel2007( $objPHPExcel );     //或者$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 非2007格式      $objWriter ->save(]xxx.xlsx]);    直接输出到浏览器     $objWriter  =  new  PHPExcel_Writer_Excel5( $objPHPExcel );    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=]resume.xls]‘);    header(]Content-Transfer-Encoding:binary]);     $objWriter ->save(’php: //output’);       ——————————————————————————————————————–    设置excel的属性:       代码如下 复制代码  创建人     $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]);    ——————————————————————————————————————–    设置当前的sheet     $objPHPExcel ->setActiveSheetIndex(0);    设置sheet的name     $objPHPExcel ->getActiveSheet()->setTitle(’Simple’);    设置单元格的值     $objPHPExcel ->getActiveSheet()->setCellValue(’A1′, ‘String’);     $objPHPExcel ->getActiveSheet()->setCellValue(’A2′, 12);     $objPHPExcel ->getActiveSheet()->setCellValue(’A3′, true);     $objPHPExcel ->getActiveSheet()->setCellValue(’C5′, ‘=SUM(C2:C4)’);     $objPHPExcel ->getActiveSheet()->setCellValue(’B8′, ‘=MIN(B2:C5)’);    合并单元格     $objPHPExcel ->getActiveSheet()->mergeCells(’A18:E22′);    分离单元格     $objPHPExcel ->getActiveSheet()->unmergeCells(’A28:B28′); 

三、PHPEXCEL举例应用

整个代码如下,值得注意的是表头用了$orderCellData记录了每个商户编号的顺序,为了在表体把对应的数据取出,代码如下:

require_once   'libs/PHPExcel/Classes/PHPExcel.php' ;       require_once   'libs/PHPExcel/Classes/PHPExcel/Writer/Excel5.php' ;       include_once   'libs/PHPExcel/Classes/PHPExcel/IOFactory.php' ;       include   'common/config.php' ;       // 创建一个处理对象实例(此对象对于2003 2007是相同的)        $objExcel  =  new  PHPExcel();            //设置属性(这段代码无关紧要,其中的内容可以替换为你需要的)        $objExcel ->getProperties()->setCreator( "office 2003 excel" );       $objExcel ->getProperties()->setLastModifiedBy( "office 2003 excel" );       $objExcel ->getProperties()->setTitle( "Office 2003 XLS Test Document" );       $objExcel ->getProperties()->setSubject( "Office 2003 XLS Test Document" );       $objExcel ->getProperties()->setDescription( "Test document for Office 2003 XLS, generated using PHP classes." );       $objExcel ->getProperties()->setKeywords( "office 2003 openxml php" );       $objExcel ->getProperties()->setCategory( "Test result file" );            //开始处理数据(索引从0开始)        $objExcel ->setActiveSheetIndex(0);         $conn  = mssql_connect( $config [ 'mssql' ][ 'host' ], $config [ 'mssql' ][ 'user' ], $config [ 'mssql' ][ 'password' ]);      mssql_select_db( $config [ 'mssql' ][ 'dbname' ], $conn );            $tm = $_REQUEST [ 'tm' ];            $sql  =  "exec HNow05_getTTSpace '','" . $tm . "','',1" ;       $sql =mb_convert_encoding( $sql , 'GBK' , 'UTF-8' );       $res =mssql_query( $sql );         $i =0;       $k  =  array ( '站码' , '站名' , '河系' , '来报时间' , '水位' , '水势' );       $count  =  count ( $k );       $arrs  =  array ( 'A' , 'B' , 'C' , 'D' , 'E' , 'F' );       //添加表头        for ( $i =0; $i < $count ; $i ++){          $objExcel ->getActiveSheet()->setCellValue( $arrs [ $i ]. "1" ,  "$k[$i]" );              }            /*--------从数据库读取数据-------*/        $i =0;       while ( $arr =mssql_fetch_array( $res ))      {          $stcd  =  $arr [ "STCD" ];          $stnm  =  $arr [ "STNM" ];          $rvnm  =  $arr [ "RVNM" ];          $tm =  $arr [ "TM" ];          $tdz =  $arr [ "TDZ" ];           $tdptn =  $arr [ "TDPTN" ];          if ( $tdptn == '6' ){              $tdptn = '平' ;         } else   if ( $tdptn == '5' ){              $tdptn = '涨' ;         } else   if ( $tdptn == '4' ){              $tdptn = '落' ;         }            $u1 = $i +2;          $stnm =iconv( "GBK" , "utf-8" , $stnm );          $rvnm =iconv( "GBK" , "utf-8" , $rvnm );          $tm =iconv( "GBK" , "utf-8" , $tm );            /*----------写入内容-------------*/           $objExcel ->getActiveSheet()->setCellValue( 'a' . $u1 ,  "$stcd" );          $objExcel ->getActiveSheet()->setCellValue( 'b' . $u1 ,  "$stnm" );          $objExcel ->getActiveSheet()->setCellValue( 'c' . $u1 ,  "$rvnm" );          $objExcel ->getActiveSheet()->setCellValue( 'd' . $u1 ,  "$tm" );          $objExcel ->getActiveSheet()->setCellValue( 'e' . $u1 ,  "$tdz" );          $objExcel ->getActiveSheet()->setCellValue( 'f' . $u1 ,  "$tdptn" );            $i ++;      }         /*----------设置单元格边框和颜色-------------*/        $rows  = mssql_num_rows( $res );       for ( $i =0; $i <( $rows +1); $i ++){          for ( $j =0; $j < $count ; $j ++){              $a  =  $i +1;              $objExcel ->getActiveSheet()->getStyle( $arrs [ $j ]. $a )->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);              $objExcel ->getActiveSheet()->getStyle( $arrs [ $j ]. $a )->getBorders()->getAllBorders()->getColor()->setARGB( 'FF00BBcc' );              //水平居中               $objExcel ->getActiveSheet()->getStyle( $arrs [ $j ]. $a )->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);         }      }         // 高置列的宽度        $objExcel ->getActiveSheet()->getColumnDimension( 'A' )->setWidth(10);       $objExcel ->getActiveSheet()->getColumnDimension( 'B' )->setWidth(15);       $objExcel ->getActiveSheet()->getColumnDimension( 'C' )->setWidth(15);       $objExcel ->getActiveSheet()->getColumnDimension( 'D' )->setWidth(20);       $objExcel ->getActiveSheet()->getColumnDimension( 'E' )->setWidth(10);       $objExcel ->getActiveSheet()->getColumnDimension( 'F' )->setWidth(10);            // 设置页眉和页脚。如果没有不同的标题奇数/即使是使用单头假定.        $objExcel ->getActiveSheet()->getHeaderFooter()->setOddHeader( '&L&BPersonal cash register&RPrinted on &D' );       $objExcel ->getActiveSheet()->getHeaderFooter()->setOddFooter( '&L&B'  .  $objExcel ->getProperties()->getTitle() .  '&RPage &P of &N' );            // 设置页方向和规模        $objExcel ->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT);       $objExcel ->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);            // 重命名表        $objExcel ->getActiveSheet()->setTitle( '实时潮汐情况' );            // Set active sheet index to the first sheet, so Excel opens this as the first sheet        $objExcel ->setActiveSheetIndex(0);        //开源代码phpfensi测试数据        // Redirect output to a client’s web browser (Excel5)保存为excel2003格式        //设置Excel的名字        $excelName  =  '实时潮汐情况(' . $tm . ')' ;       //$excelName = 'Excel_'.date("YmdHis");       header( 'Content-Type: application/vnd.ms-excel' );      header( 'Cache-Control: max-age=0' );      header(  'Content-Disposition: attachment; filename=' .iconv( "utf-8" ,  "GBK" ,  $excelName ). '.xls' );       $objWriter  = PHPExcel_IOFactory::createWriter( $objExcel ,  'Excel5' );       $objWriter ->save( 'php://output' );         exit ;

查看更多关于PHPEXCEL的用法与简介 - php高级应用的详细内容...

  阅读:49次