用Simple Excel导出xls实现方法
author:一佰互联 2019-04-30   click:184
因为前几天写了篇文章,用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"?><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>";
endforeach;
$this->lines[] = "<Row>" . $cells . "</Row>";
}
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 "<Worksheet ss:Name="" . $this->sWorksheetTitle . ""><Table>";
foreach ($this->lines as $line)
echo $line;
echo "</Table></Worksheet>";
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"); ?>

导出结果如下图: