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


Posted in PHP onSeptember 15, 2014

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

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

1、读取xls文件内容

<?php
  //向xls文件写入内容
  error_reporting(E_ALL);
  ini_set('display_errors', TRUE);  
  include 'Classes/PHPExcel.php';      
  include 'Classes/PHPExcel/IOFactory.php'; 
  //$data:xls文件内容正文
  //$title:xls文件内容标题
  //$filename:导出的文件名
  //$data和$title必须为utf-8码,否则会写入FALSE值
  function write_xls($data=array(), $title=array(), $filename='report'){
    $objPHPExcel = new PHPExcel();
    //设置文档属性,设置中文会产生乱码,需要转换成utf-8格式!!
    // $objPHPExcel->getProperties()->setCreator("云舒")
               // ->setLastModifiedBy("云舒")
               // ->setTitle("产品URL导出")
               // ->setSubject("产品URL导出")
               // ->setDescription("产品URL导出")
               // ->setKeywords("产品URL导出");
    $objPHPExcel->setActiveSheetIndex(0);
    
    $cols = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    //设置3water.com标题
    for($i=0,$length=count($title); $i<$length; $i++) {
      //echo $cols{$i}.'1';
      $objPHPExcel->getActiveSheet()->setCellValue($cols{$i}.'1', $title[$i]);
    }
    //设置标题样式
    $titleCount = count($title);
    $r = $cols{0}.'1';
    $c = $cols{$titleCount}.'1';
    $objPHPExcel->getActiveSheet()->getStyle("$r:$c")->applyFromArray(
      array(
        'font'  => array(
          'bold'   => true
        ),
        'alignment' => array(
          'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_RIGHT,
        ),
        'borders' => array(
          'top'   => array(
            'style' => PHPExcel_Style_Border::BORDER_THIN
          )
        ),
        'fill' => array(
          'type'    => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR,
          'rotation'  => 90,
          'startcolor' => array(
            'argb' => 'FFA0A0A0'
          ),
          'endcolor'  => array(
            'argb' => 'FFFFFFFF'
          )
        )
      )
    );
    
    $i = 0;
    foreach($data as $d) { //这里用foreach,支持关联数组和数字索引数组
      $j = 0;
      foreach($d as $v) {  //这里用foreach,支持关联数组和数字索引数组
        $objPHPExcel->getActiveSheet()->setCellValue($cols{$j}.($i+2), $v);
        $j++;
      }
 $i++;
    }
    // 生成2003excel格式的xls文件
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="'.$filename.'.xls"');
    header('Cache-Control: max-age=0');

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');
  }
  $array = array(
    array(1111,'名称','品牌','商品名','https://3water.com'),
    array(1111,'名称','品牌','商品名','https://3water.com'),
    array(1111,'名称','品牌','商品名','https://3water.com'),
    array(1111,'名称','品牌','商品名','https://3water.com'),
    array(1111,'名称','品牌','商品名','https://3water.com'),
  );
  write_xls($array,array('商品id','供应商名称','品牌','商品名','URL'),'report');
  
?>

2、向xls文件写内容

<?php
  //获取数据库数据(mysqli预处理学习)
  $config = array(
    'DB_TYPE'=>'mysql',
    'DB_HOST'=>'localhost',
    'DB_NAME'=>'test',
    'DB_USER'=>'root',
    'DB_PWD'=>'root',
    'DB_PORT'=>'3306',
  );
  function getProductIdByName($name) {
    global $config;
    $id = false;
    
    $mysqli = new mysqli($config['DB_HOST'], $config['DB_USER'], $config['DB_PWD'], $config['DB_NAME']);
    if(mysqli_connect_error()) {  //兼容 < php5.2.9 OO way:$mysqli->connect_error
      die("连接失败,错误码:".mysqli_connect_errno()."错误信息:".mysqli_connect_error());
    }
    //设置连接数据库的编码,不要忘了设置
    $mysqli->set_charset("gbk");
    //中文字符的编码要与数据库一致,若没设置,结果为null
    $name = iconv("utf-8", "gbk//IGNORE", $name);
    if($mysqli_stmt = $mysqli->prepare("select id from 137_product where name like ?")) {
      $mysqli_stmt->bind_param("s", $name);
      $mysqli_stmt->execute();
      $mysqli_stmt->bind_result($id);
      $mysqli_stmt->fetch();
      $mysqli_stmt->close();
    }
    $mysqli->close(); 
    return $id;  //得到的是gbk码(同数据库编码)
  }  
  $id = getProductIdByName('%伊奈卫浴伊奈分体座便器%');
  var_dump($id);
?>

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

PHP 相关文章推荐
PHP中的cookie
Nov 26 PHP
php不用内置函数对数组排序的两个算法代码
Feb 08 PHP
php 模拟post_验证页面的返回状态(实例讲解)
Oct 28 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
Jan 30 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
php+mysql删除指定编号员工信息的方法
Jan 14 PHP
thinkPHP中分页用法实例分析
Dec 26 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
Nov 01 PHP
php发送http请求的常用方法分析
Nov 08 PHP
PHP文件操作详解
Dec 30 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
May 27 PHP
php写入txt乱码的解决方法
Sep 17 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
Sep 12 #PHP
php修改指定文件后缀的方法
Sep 11 #PHP
MyEclipse常用配置图文教程
Sep 11 #PHP
Linux下PHP安装mcrypt扩展模块笔记
Sep 10 #PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 #PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
Sep 10 #PHP
PHP实现对站点内容外部链接的过滤方法
Sep 10 #PHP
You might like
PHP+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
2016/12/24 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
微信小程序如何使用globalData的方法
2019/06/06 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
python实现计算资源图标crc值的方法
2014/10/05 Python
Python中处理unchecked未捕获异常实例
2015/01/17 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
对pytorch中的梯度更新方法详解
2019/08/20 Python
python读写文件write和flush的实现方式
2020/02/21 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
Python中pass的作用与使用教程
2020/11/13 Python
Python使用Pygame绘制时钟
2020/11/29 Python
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
Tom Dixon官网:英国照明及家具设计和制造公司
2019/03/01 全球购物
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
zooplus德国:便宜地订购动物用品、动物饲料、动物食品
2020/05/06 全球购物
怎样客观的做好自我评价
2013/12/28 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书
Python 键盘事件详解
2021/11/11 Python