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(3)
Oct 09 PHP
phplock(php进程锁) v1.0 beta1
Nov 24 PHP
PHP中的错误处理、异常处理机制分析
May 07 PHP
解析如何去掉CodeIgniter URL中的index.php
Jun 25 PHP
小谈php正则提取图片地址
Mar 27 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
Nov 19 PHP
一张表搞清楚php is_null、empty、isset的区别
Jul 07 PHP
PHP 微信支付类 demo
Nov 30 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 PHP
django中的ajax组件教程详解
Oct 18 PHP
PHP 8新特性简介
Aug 18 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/10/09 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
jquery Firefox3.5中操作select的问题
2009/07/10 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
js写的方法实现上传图片之后查看大图
2014/03/05 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
jquery获取一个元素下面相同子元素的个数代码
2014/07/31 Javascript
理解JS绑定事件
2016/01/19 Javascript
jQuery 获取页面li数组并删除不在数组中的key
2016/08/02 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
js实现录音上传功能
2019/11/22 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
python实现ipsec开权限实例
2014/11/11 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
python字符串string的内置方法实例详解
2018/05/14 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
Python的iOS自动化打包实例代码
2018/11/22 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
2020/05/25 Python
python用700行代码实现http客户端
2021/01/14 Python
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
法国低价在线宠物商店:bitiba.fr
2020/07/03 全球购物
你们项目是如何进行变更控制的
2015/08/26 面试题
试用期员工工作自我评价
2014/09/10 职场文书
2014年学习部工作总结
2014/11/12 职场文书
预防艾滋病宣传活动总结
2015/05/09 职场文书
初中数学课堂教学反思
2016/02/17 职场文书