欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

php实现的操作excel类详解

程序员文章站 2023-10-31 14:55:16
本文实例讲述了php实现的操作excel类。分享给大家供大家参考,具体如下:

本文实例讲述了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程序设计有所帮助。