欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP实现导出excel数据的类库用法示例

程序员文章站 2024-03-02 09:14:46
本文实例讲述了php实现导出excel数据的类库用法。分享给大家供大家参考,具体如下: 今天一个项目要做一个php导出数据用excel保存,在网上找到一个本来是想用php...

本文实例讲述了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程序设计有所帮助。