首页 > 开发 > PHP > 正文

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

2024-05-04 22:51:54
字体:
来源:转载
供稿:网友

本文实例讲述了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);}}//导出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 "/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'); //导出并设置名称}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表