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程序设计有所帮助。