本文实例讲述了php实现导出excel数据的类库用法。分享给大家供大家参考,具体如下:
今天一个项目要做一个php导出数据用excel保存,在网上找到一个本来是想用phpexcel的,后来发现太难了,就换了一个但导出的歌声是xml
类写的很简单,但很实用。只能简单的导出字符串和数字二种格式。
如果你有兴趣,你可以拿去扩充了,基本够用。
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;
//设置sheet名称
private $sworksheettitle;
//构造函数
public function __construct(
$sencoding = 'utf-8',$bconverttypes = false,$sworksheettitle = 'table1')
{
$this->bconverttypes = $bconverttypes;
$this->setencoding($sencoding);
$this->setworksheettitle($sworksheettitle);
}
//设置编码,在构造函数里面默认的事utf-8格式
public function setencoding($sencoding)
{
$this->sencoding = $sencoding;
}
//设置excel的头
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 .= "<cell><data ss:type="$type">" . $v . "</data></cell>n";
}
$this->lines[] = "<row>n" . $cells . "</row>n"; //写入数组
}
//增加数组
public function addarray ($array)
{
foreach ($array as $k => $v)
{$this->addrow ($v);}
}
//导出xml
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;
}
}
原理很简单,就是把数据数组,读出来,再用xml的标签封上,在用php自带的header()函数告诉游览器,就可以了。
调用:
public function import()
{
$data = array(
1 => array ('学校名称',"队伍名称")
);
foreach($this->team as $key=>$value)
{
array_push($data,array($key, $value));
}
$xls = new excel_xml('utf-8', false, 'my test sheet'); //实例化函数
$xls->addarray($data);
$xls->generatexml('school'); //导出并设置名称
}
上面是的写一个导出方式。在游览器运行就已经导出数组$this->team 里面的键和值了。
更多关于php相关内容感兴趣的读者可查看本站专题:《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php数组(array)操作技巧大全》、《php排序算法总结》、《php常用遍历算法与技巧总结》、《php数据结构与算法教程》、《php程序设计算法总结》、《php数学运算技巧总结》、《php正则表达式用法总结》、《php运算与运算符用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家php程序设计有所帮助。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!