php实现的操作excel类详解

5年以前  |  阅读数:386 次  |  编程语言:PHP 

本文实例讲述了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操作Excel相关内容感兴趣的读者可查看本站专题:《php操作office文档技巧总结(包括word,excel,access,ppt)

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

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例