Heim  >  Artikel  >  Backend-Entwicklung  >  PHP基于COM的Excel操作类(PHP5)_PHP教程

PHP基于COM的Excel操作类(PHP5)_PHP教程

WBOY
WBOYOriginal
2016-07-13 17:37:26869Durchsuche

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

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;$imaxcols;$i++)
        {
            for($j=2;$jmaxrows;$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;$imaxcols;$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...

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn