';
/**
* 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;
}
}
?>