'; /** * Footer (of document) * @var string */ private $footer = ''; /** * Lines to output in the excel document * @var array */ private $lines = array(); /** * Used encoding * @var string */ private $sEncoding; /** * Convert variable types * @var boolean */ private $bConvertTypes; /** * Worksheet title * @var string */ 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'; } $v = htmlentities($v, ENT_COMPAT, $this->sEncoding); $cells .= '' . $v . ' '; } $this->lines[] = ' ' . $cells . ' '; } 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 ' '; foreach ($this->lines as $line) { echo $line; } echo '
'; echo $this->footer; } } ?>