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 相关文章推荐
PHP5中MVC结构学习
Oct 09 PHP
PHP 已经成熟
Dec 04 PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
php匹配字符中链接地址的方法
Dec 22 PHP
php查询相似度最高的字符串的方法
Mar 12 PHP
php实现SAE上使用storage上传与下载文件的方法
Jun 29 PHP
PHP远程调试之XDEBUG
Dec 29 PHP
深入理解PHP类的自动载入机制
Sep 16 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 PHP
PHP基于mcript扩展实现对称加密功能示例
Feb 21 PHP
PHP保留两位小数的几种方法
Jul 24 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的历史和优缺点
2006/10/09 PHP
PHP的FTP学习(四)
2006/10/09 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
2016/03/07 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
Javascript 读书笔记索引贴
2010/01/11 Javascript
javascript实现yield的方法
2013/11/06 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
AngularJS的ng-click传参的方法
2017/06/19 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
介绍Python中的fabs()方法的使用
2015/05/14 Python
python实现两个文件合并功能
2018/04/01 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
python使用folium库绘制地图点击框
2018/09/21 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
Windows下安装Scrapy
2018/10/17 Python
解决python线程卡死的问题
2019/02/18 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
旅游项目开发策划书
2014/01/18 职场文书
社会实践感言
2014/01/25 职场文书
网络编辑求职信
2014/04/30 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
材料员岗位职责
2015/02/10 职场文书
Js类的构建与继承案例详解
2021/09/15 Javascript
MySQL 开窗函数
2022/02/15 MySQL