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 相关文章推荐
apache+php+mysql安装配置方法小结
Aug 01 PHP
11个PHP 分页脚本推荐
Aug 15 PHP
PHP中“简单工厂模式”实例代码讲解
Sep 04 PHP
测试PHP连接MYSQL成功与否的代码
Aug 16 PHP
PHP设计模式之适配器模式代码实例
May 11 PHP
windows下apache搭建php开发环境
Aug 27 PHP
PHP实现的进度条效果详解
May 03 PHP
PHP中使用foreach()遍历二维数组的简单实例
Jun 13 PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 PHP
Centos7安装swoole扩展操作示例
Mar 26 PHP
Thinkphp极验滑动验证码实现步骤解析
Nov 24 PHP
php中yii框架实例用法
Dec 22 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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
用header 发送cookie的php代码
2007/03/16 PHP
php5中类的学习
2008/03/28 PHP
将一维或多维的数组连接成一个字符串的php代码
2010/08/08 PHP
php中filter_input函数用法分析
2014/11/15 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
jquery弹出框的用法示例(一)
2013/08/26 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
深入理解react 组件类型及使用场景
2019/03/07 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
python重试装饰器的简单实现方法
2019/01/31 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
2020/06/12 Python
PyTorch的torch.cat用法
2020/06/28 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
电子信息专业自荐书
2014/02/04 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
四风问题专项整治工作情况报告
2014/10/28 职场文书
通知函的格式
2015/04/27 职场文书
个人原因辞职信模板
2015/05/13 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
大学生受助感言
2015/08/01 职场文书