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+FLASH实现上传文件进度条相关文件 下载
Jul 21 PHP
关于Intype一些小问题的解决办法
Mar 28 PHP
php抓取https的内容的代码
Apr 06 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
Nov 19 PHP
php的sso单点登录实现方法
Jan 08 PHP
php+mysql实现无限分类实例详解
Jan 15 PHP
Laravel 5.0 发布 新版本特性详解
Feb 10 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
Jan 07 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
May 13 PHP
PHP实现的观察者模式实例
Jun 21 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
Apr 14 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判断字符以及字符串的包含方法属性
2008/08/30 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
php 常用的系统函数
2017/02/07 PHP
用javascript实现读取txt文档的脚本
2007/07/20 Javascript
jQuery 使用手册(四)
2009/09/23 Javascript
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
jquery常用技巧及常用方法列表集合
2011/04/06 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
用Javascript实现Windows任务管理器的代码
2012/03/27 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
webpack学习笔记之优化缓存、合并、懒加载
2017/08/24 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
jquery实现侧边栏左右伸缩效果的示例
2017/12/19 jQuery
浅谈Redux中间件的实践
2018/07/27 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
javascript实现固定侧边栏
2021/02/09 Javascript
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
解决python中使用plot画图,图不显示的问题
2018/07/04 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
美国专业级皮肤病和spa品质护肤品的高级零售网站:SkinCareRx
2017/02/06 全球购物
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
楼面部长岗位职责范本
2014/02/14 职场文书
党支部承诺书范文
2014/03/28 职场文书
总经理任命书
2014/03/29 职场文书
新年团拜会主持词
2014/04/02 职场文书
党的群众路线整改落实情况汇报
2014/10/28 职场文书
Django集成富文本编辑器summernote的实现步骤
2021/05/31 Python