当前位置:首页 > PHP教程 > php应用 > 列表

php中使用PHPExcel操作excel(xls)文件

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-09 15:01:12 浏览: 评论:0 

PHPExcel是php的一个插件,它可以实现读取excel文件也就是xls文件了,下面我们就来看一个PHPExcel操作excel(xls)文件例子,希望能帮助到各位,读取中文的xls、csv文件会有问题,网上找了下资料,发现PHPExcel类库好用,官网地址:http://phpexcel.codeplex.com/

1、读取xls文件内容,代码如下:

  1. <?php 
  2.     //向xls文件写入内容 
  3.     error_reporting(E_ALL); 
  4.     ini_set('display_errors', TRUE);     
  5.     include 'Classes/PHPExcel.php';             
  6.     include 'Classes/PHPExcel/IOFactory.php';   
  7.     //$data:xls文件内容正文 
  8.     //$title:xls文件内容标题 
  9.     //$filename:导出的文件名 
  10.     //$data和$title必须为utf-8码,否则会写入FALSE值 
  11.     function write_xls($data=array(), $title=array(), $filename='report'){ 
  12.         $objPHPExcel = new PHPExcel(); 
  13.         //设置文档属性,设置中文会产生乱码,待完善... 
  14.         // $objPHPExcel->getProperties()->setCreator("云舒") 
  15.                              // ->setLastModifiedBy("云舒") 
  16.                              // ->setTitle("产品URL导出") 
  17.                              // ->setSubject("产品URL导出") 
  18.                              // ->setDescription("产品URL导出") 
  19.                              // ->setKeywords("产品URL导出"); 
  20.         $objPHPExcel->setActiveSheetIndex(0); 
  21.          
  22.         $cols = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  23.         //设置www.phpfensi.com标题 
  24.         for($i=0,$length=count($title); $i<$length$i++) { 
  25.             //echo $cols{$i}.'1'; 
  26.             $objPHPExcel->getActiveSheet()->setCellValue($cols{$i}.'1'$title[$i]); 
  27.         } 
  28.         //设置标题样式 
  29.         $titleCount = count($title); 
  30.         $r = $cols{0}.'1'
  31.         $c = $cols{$titleCount}.'1'
  32.         $objPHPExcel->getActiveSheet()->getStyle("$r:$c")->applyFromArray( 
  33.             array
  34.                 'font'    => array
  35.                     'bold'      => true 
  36.                 ), 
  37.                 'alignment' => array
  38.                     'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_RIGHT, 
  39.                 ), 
  40.                 'borders' => array
  41.                     'top'     => array
  42.                         'style' => PHPExcel_Style_Border::BORDER_THIN 
  43.                     ) 
  44.                 ), 
  45.                 'fill' => array
  46.                     'type'       => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR, 
  47.                     'rotation'   => 90, 
  48.                     'startcolor' => array
  49.                         'argb' => 'FFA0A0A0' 
  50.                     ), 
  51.                     'endcolor'   => array
  52.                         'argb' => 'FFFFFFFF' 
  53.                     ) 
  54.                 ) 
  55.             ) 
  56.         ); 
  57.          
  58.         $i = 0; 
  59.         foreach($data as $d) {  //这里用foreach,支持关联数组和数字索引数组 
  60.             $j = 0; 
  61.             foreach($d as $v) {   //这里用foreach,支持关联数组和数字索引数组 
  62.                 $objPHPExcel->getActiveSheet()->setCellValue($cols{$j}.($i+2), $v); 
  63.                 $j++; 
  64.             } 
  65.        $i++; 
  66.         } 
  67.         // 生成2003excel格式的xls文件 
  68.         header('Content-Type: application/vnd.ms-excel'); 
  69.         header('Content-Disposition: attachment;filename="'.$filename.'.xls"'); 
  70.         header('Cache-Control: max-age=0'); 
  71.         $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel'Excel5'); 
  72.         $objWriter->save('php://output'); 
  73.     } 
  74.     $array = array
  75.         array(1111,'名称','品牌','商品名','http://www.baidu.com'), 
  76.         array(1111,'名称','品牌','商品名','http://www.baidu.com'), 
  77.         array(1111,'名称','品牌','商品名','http://www.baidu.com'), 
  78.         array(1111,'名称','品牌','商品名','http://www.baidu.com'), 
  79.         array(1111,'名称','品牌','商品名','http://www.baidu.com'), 
  80.     ); 
  81.     write_xls($array,array('商品id','供应商名称','品牌','商品名','URL'),'report'); 
  82.      
  83. ?> 

2、向xls文件写内容,代码如下:

  1. <?php 
  2.     //获取数据库数据(mysqli预处理学习) 
  3.     $config = array
  4.         'DB_TYPE'=>'mysql'
  5.         'DB_HOST'=>'localhost'
  6.         'DB_NAME'=>'test'
  7.         'DB_USER'=>'root'
  8.         'DB_PWD'=>'root'
  9.         'DB_PORT'=>'3306'
  10.     ); 
  11.     function getProductIdByName($name) { 
  12.         global $config
  13.         $id = false; 
  14.          
  15.         $mysqli = new mysqli($config['DB_HOST'], $config['DB_USER'], $config['DB_PWD'], $config['DB_NAME']); 
  16.         if(mysqli_connect_error()) {   //兼容 < php5.2.9 OO way:$mysqli->connect_error 
  17.             die("连接失败,错误码:".mysqli_connect_errno()."错误信息:".mysqli_connect_error()); 
  18.         } 
  19.         //设置连接数据库的编码,不要忘了设置 
  20.         $mysqli->set_charset("gbk"); 
  21.         //中文字符的编码要与数据库一致,若没设置,结果为null 
  22.         $name = iconv("utf-8""gbk//IGNORE"$name); 
  23.         if($mysqli_stmt = $mysqli->prepare("select id from 137_product where name like ?")) { 
  24.             $mysqli_stmt->bind_param("s"$name); 
  25.             $mysqli_stmt->execute(); 
  26.             $mysqli_stmt->bind_result($id); 
  27.             $mysqli_stmt->fetch(); 
  28.             $mysqli_stmt->close(); 
  29.         } 
  30.         $mysqli->close();  
  31.         return $id;   //得到的是gbk码(同数据库编码) 
  32.     }    
  33.     $id = getProductIdByName('%伊奈卫浴伊奈分体座便器%'); 
  34.     var_dump($id); 
  35. ?>

Tags: HPExcel excel文件

分享到: