文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>简单的Excel输出类(xml格式)

简单的Excel输出类(xml格式)

时间:2008-04-06  来源:blau

其实导出excel格式最简单的用csv,php本身就有fputcsv这个很帅的函数将一个数组直接写成csv文件。但是如果想要在一个文件中建立多个工作簿用csv就不靠谱了。PHP输出Excel的现成类蛮多的,有基于pear、历史悠久的Spreadsheet_Excel_Writer,基于xml的新锐PHPExcel,他们功能都很好很强大,可以设置单元格格式什么的。但是如果我们仅仅是为了输出简单的二维的数据表格,没有必要用到这么大的家伙。一个是安装麻烦,PHPExcel还需要php5.2以上才行,另外一个大问题就是输出数据很大的时候内存可能会溢出。下面给出的类将采用Excel最简单的格式要求,边输出数据边写的方式来减少对内存的占用。最简单的excel格式请看这里:

http://www.cnblogs.com/bigtall/archive/2004/10/13/51821.aspx

下面是整个类的代码:

class ExcelWriter{
        
    var $fp=null;
    var $error;
    var $state="CLOSED";
    var $newRow=false;
   
    var $header;
   
     
    function ExcelWriter($file=""){
        if($this->state != "CLOSED"){
            $this->error = "Error : Another file is opend .Close it to save the file";
            return false;
        }   
        
        if(!empty($file)){
            if(file_exists($file)) unlink($file);
            $this->fp = @fopen($file,"w+");
        }else{
            $this->error = "Usage : New ExcelWriter('fileName')";
            return false;
        }   
        if($this->fp == false){
            $this->error = "Error: Unable to open/create File.You may not have permmsion to write the file.";
            return false;
        }
        $this->state = "OPENED";
        
        $this->makeHeader();
        
        return true;
    }
   
    function close(){
        if($this->state != "OPENED"){
            $this->error="Error : Please open the file.";
            return false;
        }
        
        $this->makeFooter();
        fclose($this->fp);
        
        $this->state="CLOSED";
        return true;
    }
                                
    function makeHeader(){
        $str = "
";
        $str .= EOH
Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
EOH;
        
        fwrite($this->fp, $str);
        return true;
    }
    function addSheet($name){
        $str = "
               
";
        fwrite($this->fp, $str);
        return true;
        
    }
   
     
    function addRow($aData){
        if($this->state!="OPENED"){
            $this->error="Error : Please open the file.";
            return false;
        }
        
        if(!is_array($aData)){
            $this->error="Error : Argument is not valid. Supply an valid Array.";
            return false;
        }
         
        $rowstr = "
        ";
        foreach($aData as $col){
            $rowstr .= "
            $col";
        }
        $rowstr .= "
        
        ";
        fwrite($this->fp,$rowstr);
        return true;
    }
    function endSheet(){
        $str = EOH
  
    /Table>
/Worksheet>
EOH;
   
        fwrite($this->fp, $str);
        return true;
        
    }
   
    function makeFooter(){
   
        $str = "
";
        fwrite($this->fp, $str);
        return true;
    }
};




相关阅读 更多 +
排行榜 更多 +
祖玛泡泡龙(经典祖玛)下载

祖玛泡泡龙(经典祖玛)下载

休闲益智 下载
网络掠夺者最新版下载

网络掠夺者最新版下载

休闲益智 下载
迷你冲撞小游戏中文版下载

迷你冲撞小游戏中文版下载

休闲益智 下载