Home  >  Article  >  Backend Development  >  PHP COM-based Excel operation class (PHP5)_PHP tutorial

PHP COM-based Excel operation class (PHP5)_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 17:37:26870browse

无聊写这玩的,喜欢扩展的朋友别忘了发我一份哦,哈哈 谢谢,

ps:测试没什么效率的说,哈哈~~~

guyudj@yahoo.com.cn复制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;

//构造函数
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;
 &nb

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/486592.htmlTechArticle无聊写这玩的,喜欢扩展的朋友别忘了发我一份哦,哈哈 谢谢, ps:测试没什么效率的说,哈哈~~~ guyudj@yahoo.com.cn复制PHP内容到剪贴板 PH...

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn