用Simple Excel導出xls

simple excel,一個很簡單的導出xls類,特好用!

simple excel源碼如下:

<?php
    
    /**
    * Simple excel generating from PHP5
    *
    * @package Utilities
    * @license http://www.opensource.org/licenses/mit-license.php
    * @author Oliver Schwarz <[email protected]>
    * @version 1.0
    */
    
    class Excel_Xml
    {
    
    private $header = "<?xml version=\"1.0\" encoding=\"%s\"?\>\n<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" 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\">";
    
    private $footer = "</Workbook>";
    
    private $lines = array();
    
    private $sEncoding;
    
    private $bConvertTypes;
    
    private $sWorksheetTitle;
    
    
    public function __construct($sEncoding = 'UTF-8', $bConvertTypes = false, $sWorksheetTitle = 'Table1')
    {
    $this->bConvertTypes = $bConvertTypes;
    $this->setEncoding($sEncoding);
    $this->setWorksheetTitle($sWorksheetTitle);
    }
    
    public function setEncoding($sEncoding)
    {
    $this->sEncoding = $sEncoding;
    }
    
    public function setWorksheetTitle ($title)
    {
    $title = preg_replace ("/[\\\|:|\/|\?|\*|\[|\]]/", "", $title);
    $title = substr ($title, 0, 31);
    $this->sWorksheetTitle = $title;
    }
    
    private function addRow ($array)
    {
    $cells = "";
    foreach ($array as $k => $v):
    $type = 'String';
    if ($this->bConvertTypes === true && is_numeric($v)):
    $type = 'Number';
    endif;
    $v = htmlentities($v, ENT_COMPAT, $this->sEncoding);
    $cells .= "<Cell><Data ss:Type=\"$type\">" . $v . "</Data></Cell>\n";
    endforeach;
    $this->lines[] = "<Row>\n" . $cells . "</Row>\n";
    }
    
    
    public function addArray ($array)
    {
    foreach ($array as $k => $v)
    $this->addRow ($v);
    }
    
    
    public function generateXML ($filename = 'excel-export')
    {
    $filename = preg_replace('/[^aA-zZ0-9\_\-]/', '', $filename);
    header("Content-Type: application/vnd.ms-excel; charset=" . $this->sEncoding);
    header("Content-Disposition: inline; filename=\"" . $filename . ".xls\"");
    echo stripslashes (sprintf($this->header, $this->sEncoding));
    echo "\n<Worksheet ss:Name=\"" . $this->sWorksheetTitle . "\">\n<Table>\n";
    foreach ($this->lines as $line)
    echo $line;
    
    echo "</Table>\n</Worksheet>\n";
    echo $this->footer;
    }
    
    }
    
    ?>


使用php案例如下:

    <?php
    /**
    * @author mckee
    * @blog www.phpddt.com
    */
    require_once 'excel.class.php';
    $xls = new Excel_Xml('UTF-8',false,'測試');
    $data = array(
    1 => array('名稱','地址'),
    2 => array('php點點通','www.phpddt.com'),
    3 => array('百度','www.baidu.com')
    );
    $xls->addArray($data);
    $xls->generateXML('name4test');
    ?>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章