当前位置: 首页 > 工具软件 > Simple PHP > 使用案例 >

php用Simple Excel导出xls

上官飞
2023-12-01

因为前几天写了篇文章,用php-excel-reader类导入excel内容,顺便说些excel导出问题,我用的是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 <oliver.schwarz@gmail.com>
 * @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');
 
?>
http://www.phpddt.com/php/Simple-Excel.html

 

 类似资料: