本文实例讲述了PHP实现导出excel数据的类库用法。分享给大家供大家参考,具体如下:
今天一个项目要做一个PHP导出数据用excel保存,在网上找到一个本来是想用phpexcel的,后来发现太难了,就换了一个但导出的歌声是XML
类写的很简单,但很实用。只能简单的导出字符串和数字二种格式。
如果你有兴趣,你可以拿去扩充了,基本够用。
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;//设置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>
";} $this->lines[] = "<Row>
" . $cells . "</Row>
"; //写入数组}//增加数组public function addArray ($array){foreach ($array as $k => $v) {$this->addRow ($v);}}//导出xmlpublic 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;}}
原理很简单,就是把数据数组,读出来,再用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程序设计有所帮助。