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

php中使用PHPExcel读写excel(xls)文件的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-11 17:15:52 浏览: 评论:0 

这篇文章主要介绍了php中使用PHPExcel读写excel(xls)文件的方法,phpExcel是常用的用于操作Excel的PHP类库,应用非常广泛。需要的朋友可以参考下

本文实例讲述了PHP中使用PHPExcel读写excel(xls)文件的方法,非常实用。分享给大家供大家参考之用。具体方法如下:

很多PHP类库在读取中文的xls、csv文件时会有问题,网上找了下资料,发现PHPExcel类库好用,官网地址为:http://phpexcel.codeplex.com/。现将PHPExcel读写Excel的方法分别叙述如下:

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.     //设置文档属性,设置中文会产生乱码,需要转换成utf-8格式!! 
  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.jb51.net标题 
  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.  
  72.     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel'Excel5'); 
  73.     $objWriter->save('php://output'); 
  74.   } 
  75.   $array = array
  76.     array(1111,'名称','品牌','商品名','https://www.phpfensi.com'), 
  77.     array(1111,'名称','品牌','商品名','https://www.phpfensi.com'), 
  78.     array(1111,'名称','品牌','商品名','https://www.phpfensi.com'), 
  79.     array(1111,'名称','品牌','商品名','https://www.phpfensi.com'), 
  80.     array(1111,'名称','品牌','商品名','https://www.phpfensi.com'), 
  81.   ); 
  82.   write_xls($array,array('商品id','供应商名称','品牌','商品名','URL'),'report'); 
  83.     
  84. ?> 

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. ?> 

希望本文所述对大家的PHP程序设计有所帮助

Tags: PHPExcel excel(xls)

分享到: