PHP基于COM的Excel操作類(PHP5)
無聊寫這玩的,喜歡擴(kuò)展的朋友別忘了發(fā)我一份哦,哈哈 謝謝,
ps:測(cè)試沒什么效率的說,哈哈~~~
[email protected]復(fù)制PHP內(nèi)容到剪貼板PHP代碼:
<?php
/***基 于 COM 的 Excel 操作類(PHP5.x)*PHPer:T.T.R*Date:[2007-05-24]*Ver:1.0.0*Blog:[url]http://www.Gx3.cn[/url] [url]http://Gx3.cn[/url]*QQ:252319874*/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;
//構(gòu)造函數(shù) 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; }
//設(shè)置文件地址 public function setFile($filename) { return $this->filename=$filename; }
//打開文件 public function Open() { $this->workbook=$this->excel->WorkBooks->Open($this->filename); }
//設(shè)置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(); } }
//取得表所有值并寫進(jìn)數(shù)組 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; }
//返回表格內(nèi)容數(shù)組 public function getAllData() { return $this->cells; }
//返回制定單元格內(nèi)容 public function Cell($row,$col) { return $this->worksheet->Cells($row,$col)->Value; }
//取得表格字段名數(shù)組 public function getFields() { for($i=1;$i<$this->maxcols;$i++) { $this->fields[]=$this->worksheet->Cells(1,$i)->value; } return $this->fields; }
//修改制定單元格內(nèi)容 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(); } }
//修改一行數(shù)據(jù) 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(); } } }
//取得總列數(shù) private function maxCols() { $i=1; while(true) { if(0==$this->worksheet->Cells(1,$i)) { return $i; break; } $i++; } }
//取得總行數(shù) private function maxRows() { $i=1; while(true) { if(0==$this->worksheet->Cells($i,1)) { return $i; break; } $i++; } }
//讀取制定行數(shù)據(jù) public function getOneRow($row=2) { if($row>=2) { for($i=1;$i<$this->maxcols;$i++) { $arr[]=$this->worksheet->Cells($row,$i)->Value; } return $arr; } }
//關(guān)閉對(duì)象 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:Apache2htdocswwwrootMyExcel.xls');$worksheet = $excel->WorkSheets(1);echo $worksheet->Cells(2,6)->Value;$excel->WorkBooks->Close();*/
$excel=Excel::getInstance();$excel->setFile('D:Apache2htdocswwwrootMyExcel.xls');$excel->Open();$excel->setSheet();for($i=1;$i<16;$i++ ){ $arr[]=$i;}//$excel->editOneRow(2,$arr);print_r($excel->getAllData());$excel->Close();
?>