php实现的操作excel类详解


Posted in PHP onJanuary 15, 2016

本文实例讲述了php实现的操作excel类。分享给大家供大家参考,具体如下:

<?php
class Excel
{
  static $instance=null;
  private $excel=null;
  private $workbook=null;
  private $workbookadd=null;
  private $worksheet=null;
  private $worksheetadd=null;
  private $sheetnum=1;
  private $cells=array();
  private $fields=array();
  private $maxrows;
  private $maxcols;
  private $filename;
  //构造函数
  private function Excel()
  {
    $this->excel = new COM("Excel.Application") or die("Did Not Connect");
  }
  //类入口
  public static function getInstance()
  {
    if(null == self::$instance)
    {
      self::$instance = new Excel();
    }
    return self::$instance;
  }
  //设置文件地址
  public function setFile($filename)
  {
    return $this->filename=$filename;
  }
  //打开文件
  public function Open()
  {
    $this->workbook=$this->excel->WorkBooks->Open($this->filename);
  }
  //设置Sheet
  public function setSheet($num=1)
  {
    if($num>0)
    {
      $this->sheetnum=$num;
      $this->worksheet=$this->excel->WorkSheets[$this->sheetnum];
      $this->maxcols=$this->maxCols();
      $this->maxrows=$this->maxRows();
      $this->getCells();
    }
  }
  //取得表所有值并写进数组
  private function getCells()
  {
    for($i=1;$i<$this->maxcols;$i++)
    {
      for($j=2;$j<$this->maxrows;$j++)
      {
        $this->cells[$this->worksheet->Cells(1,$i)->value][]=(string)$this->worksheet->Cells($j,$i)->value;
      }
    }
    return $this->cells;
  }
  //返回表格内容数组
  public function getAllData()
  {
    return $this->cells;
  }
  //返回制定单元格内容
  public function Cell($row,$col)
  {
    return $this->worksheet->Cells($row,$col)->Value;
  }
  //取得表格字段名数组
  public function getFields()
  {
    for($i=1;$i<$this->maxcols;$i++)
    {
      $this->fields[]=$this->worksheet->Cells(1,$i)->value;
    }
    return $this->fields;
  }
  //修改制定单元格内容
  public function editCell($row,$col,$value)
  {
    if($this->workbook==null || $this->worksheet==null)
    {
      echo "Error:Did Not Connect!";
    }else{
      $this->worksheet->Cells($row,$col)->Value=$value;
      $this->workbook->Save();
    }
  }
  //修改一行数据
  public function editOneRow($row,$arr)
  {
    if($this->workbook==null || $this->worksheet==null || $row>=2)
    {
      echo "Error:Did Not Connect!";
    }else{
      if(count($arr)==$this->maxcols-1)
      {
        $i=1;
        foreach($arr as $val)
        {
          $this->worksheet->Cells($row,$i)->Value=$val;
          $i++;
        }
        $this->workbook->Save();
      }
    }
  }
  //取得总列数
  private function maxCols()
  {
    $i=1;
    while(true)
    {
      if(0==$this->worksheet->Cells(1,$i))
      {
        return $i;
        break;
      }
      $i++;
    }
  }
  //取得总行数
  private function maxRows()
  {
    $i=1;
    while(true)
    {
      if(0==$this->worksheet->Cells($i,1))
      {
        return $i;
        break;
      }
      $i++;
    }
  }
  //读取制定行数据
  public function getOneRow($row=2)
  {
    if($row>=2)
    {
      for($i=1;$i<$this->maxcols;$i++)
      {
        $arr[]=$this->worksheet->Cells($row,$i)->Value;
      }
      return $arr;
    }
  }
  //关闭对象
  public function Close()
  {
    $this->excel->WorkBooks->Close();
    $this->excel=null;
    $this->workbook=null;
    $this->worksheet=null;
    self::$instance=null;
  }
};
/*
$excel = new COM("Excel.Application");
$workbook = $excel->WorkBooks->Open('D://Apache2//htdocs//wwwroot//MyExcel.xls');
$worksheet = $excel->WorkSheets(1);
echo $worksheet->Cells(2,6)->Value;
$excel->WorkBooks->Close();
*/
$excel=Excel::getInstance();
$excel->setFile("D://kaka.xls");
$excel->Open();
$excel->setSheet();
for($i=1;$i<16;$i++ )
{
  $arr[]=$i;
}
//$excel->editOneRow(2,$arr);
//print_r($excel->getAllData());
    $str=$excel->getAllData();
    include_once('mail.class.php');
    $smtpserver="smtp.yeah.net";
   $smtpserverport=25;
   $smtpuseremail="yanqihu58@yeah.net";
   $smtpemailto="yanqihu@139.com";
   $smtpuser="yanqihu58";
   $smtppwd="123456789";
    $mailtype="HTML";
    $smtp=new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppwd);
    $message="你好";
   //$message.="首页连接地址为:".$this->link_url."<br>";
   //$message.="电子邮箱为:".$this->link_email."<br>";
   //$message.="商务联系QQ:".$this->link_qq."<br>";
   //$message.="商务电话QQ:".$this->link_tel."<br>";
   //$message.="联系人:".$this->link_people."<br>";
    $smtp->debug=false;
    foreach($str['email'] as $key=>$value){
      $smtpemailto=$value;
      @$smtp->sendmail($smtpemailto,$smtpuseremail,$mailsubject,$message,$mailtype);
      exit;
    }
    //exit;
$excel->Close();
?>

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

PHP 相关文章推荐
PHP 实现多服务器共享 SESSION 数据
Aug 15 PHP
在PHP中检查PHP文件是否有语法错误的方法
Dec 23 PHP
centos 5.6 升级php到5.3的方法
May 14 PHP
用PHP实现浏览器点击下载TXT文档的方法详解
Jun 02 PHP
解析Extjs与php数据交互(增删查改)
Jun 25 PHP
php json与xml序列化/反序列化
Oct 28 PHP
php中的filesystem文件系统函数介绍及使用示例
Feb 13 PHP
thinkphp模板赋值与替换实例简述
Nov 24 PHP
如何用PHP来实现一个动态Web服务器
Jul 29 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
Jan 10 PHP
Laravel获取所有的数据库表及结构的方法
Oct 10 PHP
php实现的xml操作类
Jan 15 #PHP
PHP基于单例模式实现的数据库操作基类
Jan 15 #PHP
Linux安装配置php环境的方法
Jan 14 #PHP
PHP实现QQ登录实例代码
Jan 14 #PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 #PHP
详解HTTP Cookie状态管理机制
Jan 14 #PHP
在php中设置session用memcache来存储的方法总结
Jan 14 #PHP
You might like
第十一节--重载
2006/11/16 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
2014/04/09 PHP
PHP 获取指定地区的天气实例代码
2017/02/08 PHP
php生成网页桌面快捷方式
2017/05/05 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
理解JavaScript中worker事件api
2015/12/25 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
vue项目中api接口管理总结
2018/04/20 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
js实现unicode码字符串与utf8字节数据互转详解
2019/03/21 Javascript
回顾Javascript React基础
2019/06/15 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
[54:58]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第一场 11.25
2020/11/25 DOTA
Python版微信红包分配算法
2015/05/04 Python
Python使用django获取用户IP地址的方法
2015/05/11 Python
python urllib爬取百度云连接的实例代码
2017/06/19 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
详解python读取image
2019/04/03 Python
解析PyCharm Python运行权限问题
2020/01/08 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
Python实现文件压缩和解压的示例代码
2020/08/12 Python
2014年计算机专业个人自我评价
2014/01/19 职场文书
装饰活动策划方案
2014/02/11 职场文书
3分钟演讲稿
2014/04/30 职场文书
车辆年检委托书范本
2014/10/14 职场文书
电力工程合作意向书
2015/05/11 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书