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 empty(),isset(),is_null()的实例测试详解
Jun 06 PHP
关于初学PHP时的知识积累总结
Jun 07 PHP
smarty内部日期函数html_select_date()用法实例分析
Jul 08 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
php反射类ReflectionClass用法分析
May 12 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
May 13 PHP
深入理解PHP之OpCode原理详解
Jun 01 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
SAE实时日志接口SDK用法示例
Oct 09 PHP
php车辆违章查询数据示例
Oct 14 PHP
php+Memcached实现简单留言板功能示例
Feb 15 PHP
Laravel利用gulp如何构建前端资源详解
Jun 03 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/11/25 PHP
php 三维饼图的实现代码
2008/09/28 PHP
php 显示指定路径下的图片
2009/10/29 PHP
JavaScript中Math对象使用说明
2008/01/16 Javascript
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
2017/02/19 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
H5实现仿flash效果的实现代码
2017/09/29 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
python WindowsError的错误代码详解
2017/07/23 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
Python编程求质数实例代码
2018/01/31 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
python构建基础的爬虫教学
2018/12/23 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
阿联酋航空假期:Emirates Holidays
2018/03/20 全球购物
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
高中生校园生活自我评价
2013/09/19 职场文书
临床护理求职信
2014/04/26 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
一级电子管军用接收机测评
2022/04/05 无线电