当前位置:首页 > PHP教程 > php类库 > 列表

php实现的操作excel类详解

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-06 09:55:42 浏览: 评论:0 

这篇文章主要介绍了php实现的操作excel类,较为详细的分析说明了PHP操作excel的具体技巧,包括PHP针对excel的创建、打开、读取、修改等,需要的朋友可以参考下。

本文实例讲述了php实现的操作excel类,分享给大家供大家参考,具体如下:

  1. <?php 
  2. class Excel 
  3.   static $instance=null; 
  4.   private $excel=null; 
  5.   private $workbook=null; 
  6.   private $workbookadd=null; 
  7.   private $worksheet=null; 
  8.   private $worksheetadd=null; 
  9.   private $sheetnum=1; 
  10.   private $cells=array(); 
  11.   private $fields=array(); 
  12.   private $maxrows
  13.   private $maxcols
  14.   private $filename
  15.   //构造函数 
  16.   private function Excel() 
  17.   { 
  18.     $this->excel = new COM("Excel.Application"or die("Did Not Connect"); 
  19.   } 
  20.   //类入口 
  21.   public static function getInstance() 
  22.   { 
  23.     if(null == self::$instance
  24.     { 
  25.       self::$instance = new Excel(); 
  26.     } 
  27.     return self::$instance
  28.   } 
  29.   //设置文件地址 
  30.   public function setFile($filename
  31.   { 
  32.     return $this->filename=$filename
  33.   } 
  34.   //打开文件 
  35.   public function Open() 
  36.   { 
  37.     $this->workbook=$this->excel->WorkBooks->Open($this->filename); 
  38.   } 
  39.   //设置Sheet 
  40.   public function setSheet($num=1) 
  41.   { 
  42.     if($num>0) 
  43.     { 
  44.       $this->sheetnum=$num
  45.       $this->worksheet=$this->excel->WorkSheets[$this->sheetnum]; 
  46.       $this->maxcols=$this->maxCols(); 
  47.       $this->maxrows=$this->maxRows(); 
  48.       $this->getCells(); 
  49.     } 
  50.   } 
  51.   //取得表所有值并写进数组 
  52.   private function getCells() 
  53.   { 
  54.     for($i=1;$i<$this->maxcols;$i++) 
  55.     { 
  56.       for($j=2;$j<$this->maxrows;$j++) 
  57.       { 
  58.         $this->cells[$this->worksheet->Cells(1,$i)->value][]=(string)$this->worksheet->Cells($j,$i)->value; 
  59.       } 
  60.     } 
  61.     return $this->cells; 
  62.   } 
  63.   //返回表格内容数组 
  64.   public function getAllData() 
  65.   { 
  66.     return $this->cells; 
  67.   } 
  68.   //返回制定单元格内容 
  69.   public function Cell($row,$col
  70.   { 
  71.     return $this->worksheet->Cells($row,$col)->Value; 
  72.   } 
  73.   //取得表格字段名数组 
  74.   public function getFields() 
  75.   { 
  76.     for($i=1;$i<$this->maxcols;$i++) 
  77.     { 
  78.       $this->fields[]=$this->worksheet->Cells(1,$i)->value; 
  79.     } 
  80.     return $this->fields; 
  81.   } 
  82.   //修改制定单元格内容 
  83.   public function editCell($row,$col,$value
  84.   { 
  85.     if($this->workbook==null || $this->worksheet==null) 
  86.     { 
  87.       echo "Error:Did Not Connect!"
  88.     }else
  89.       $this->worksheet->Cells($row,$col)->Value=$value
  90.       $this->workbook->Save(); 
  91.     } 
  92.   } 
  93.   //修改一行数据 
  94.   public function editOneRow($row,$arr
  95.   { 
  96.     if($this->workbook==null || $this->worksheet==null || $row>=2) 
  97.     { 
  98.       echo "Error:Did Not Connect!"
  99.     }else
  100.       if(count($arr)==$this->maxcols-1) 
  101.       { 
  102.         $i=1; 
  103.         foreach($arr as $val
  104.         { 
  105.           $this->worksheet->Cells($row,$i)->Value=$val
  106.           $i++; 
  107.         } 
  108.         $this->workbook->Save(); 
  109.       } 
  110.     } 
  111.   } 
  112.   //取得总列数 
  113.   private function maxCols() 
  114.   { 
  115.     $i=1; 
  116.     while(true) 
  117.     { 
  118.       if(0==$this->worksheet->Cells(1,$i)) 
  119.       { 
  120.         return $i
  121.         break
  122.       } 
  123.       $i++; 
  124.     } 
  125.   } 
  126.   //取得总行数 
  127.   private function maxRows() 
  128.   { 
  129.     $i=1; 
  130.     while(true) 
  131.     { 
  132.       if(0==$this->worksheet->Cells($i,1)) 
  133.       { 
  134.         return $i
  135.         break
  136.       } 
  137.       $i++; 
  138.     } 
  139.   } 
  140.   //读取制定行数据 
  141.   public function getOneRow($row=2) 
  142.   { 
  143.     if($row>=2) 
  144.     { 
  145.       for($i=1;$i<$this->maxcols;$i++) 
  146.       { 
  147.         $arr[]=$this->worksheet->Cells($row,$i)->Value; 
  148.       } 
  149.       return $arr
  150.     } 
  151.   } 
  152.   //关闭对象 
  153.   public function Close() 
  154.   { 
  155.     $this->excel->WorkBooks->Close(); 
  156.     $this->excel=null; 
  157.     $this->workbook=null; 
  158.     $this->worksheet=null; 
  159.     self::$instance=null; 
  160.   } 
  161. }; 
  162. /* 
  163. $excel = new COM("Excel.Application"); 
  164. $workbook = $excel->WorkBooks->Open('D://Apache2//htdocs//wwwroot//MyExcel.xls'); 
  165. $worksheet = $excel->WorkSheets(1); 
  166. echo $worksheet->Cells(2,6)->Value; 
  167. $excel->WorkBooks->Close(); 
  168. */ 
  169. $excel=Excel::getInstance(); 
  170. $excel->setFile("D://kaka.xls"); 
  171. $excel->Open(); 
  172. $excel->setSheet(); 
  173. for($i=1;$i<16;$i++ ) 
  174.   $arr[]=$i
  175. //$excel->editOneRow(2,$arr); 
  176. //print_r($excel->getAllData()); 
  177.     $str=$excel->getAllData(); 
  178.     include_once('mail.class.php'); 
  179.     $smtpserver="smtp.yeah.net"
  180.    $smtpserverport=25; 
  181.    $smtpuseremail="yanqihu58@yeah.net"
  182.    $smtpemailto="yanqihu@139.com"
  183.    $smtpuser="yanqihu58"
  184.    $smtppwd="123456789"
  185.     $mailtype="HTML"
  186.     $smtp=new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppwd); 
  187.     $message="你好"
  188.    //$message.="首页连接地址为:".$this->link_url."<br>"; 
  189.    //$message.="电子邮箱为:".$this->link_email."<br>"; 
  190.    //$message.="商务联系QQ:".$this->link_qq."<br>"; 
  191.    //$message.="商务电话QQ:".$this->link_tel."<br>"; 
  192.    //$message.="联系人:".$this->link_people."<br>"; 
  193.     $smtp->debug=false; 
  194.     foreach($str['email'as $key=>$value){ 
  195.       $smtpemailto=$value
  196.       @$smtp->sendmail($smtpemailto,$smtpuseremail,$mailsubject,$message,$mailtype); 
  197.       exit
  198.     } 
  199.     //exit; 
  200. $excel->Close(); 
  201. ?>

Tags: php+excel类

分享到: