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 相关文章推荐
一个SQL管理员的web接口
Oct 09 PHP
php正则校验用户名介绍
Jul 19 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
Nov 11 PHP
ThinkPHP中Session用法详解
Nov 29 PHP
javascript数组与php数组的地址传递及值传递用法实例
Jan 22 PHP
php类的扩展和继承用法实例
Jun 20 PHP
2款PHP无限级分类实例代码
Nov 11 PHP
php获得文件夹下所有文件的递归算法的简单实例
Nov 01 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
PHP手机号中间四位用星号*代替显示的实例
Jun 02 PHP
PHP注释语法规范与命名规范详解篇
Jan 21 PHP
PHP中Session ID的实现原理实例分析
Aug 17 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
PHP分页显示制作详细讲解
2006/10/09 PHP
php使用cookie显示用户上次访问网站日期的方法
2015/01/26 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
CI框架附属类用法分析
2018/12/26 PHP
Stop SQL Server
2007/06/21 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
javascript计时器详解
2015/02/28 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
3种不同的ContextMenu右键菜单实现代码
2016/11/03 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
Python实现的弹球小游戏示例
2017/08/01 Python
python简单实例训练(21~30)
2017/11/15 Python
有趣的python小程序分享
2017/12/05 Python
python实现微信远程控制电脑
2018/02/22 Python
python各类经纬度转换的实例代码
2019/08/08 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
投标承诺书范本
2014/03/27 职场文书
简洁的英文求职信范文
2014/05/03 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
深入理解go slice结构
2021/09/15 Golang