-
php实现的操作excel类详解
这篇文章主要介绍了php实现的操作excel类,较为详细的分析说明了PHP操作excel的具体技巧,包括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();
- ?>
出处:http://www.phpfensi.com/php/20210706/17031.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式