PHP实现导出excel数据的类库用法示例
本文实例讲述了PHP实现导出excel数据的类库用法。分享给大家供大家参考,具体如下:
今天一个项目要做一个PHP导出数据用excel保存,在网上找到一个本来是想用phpexcel的,后来发现太难了,就换了一个但导出的歌声是XML
类写的很简单,但很实用。只能简单的导出字符串和数字二种格式。
如果你有兴趣,你可以拿去扩充了,基本够用。
classExcel_XML
{
//定于私有变量,顶部标签
private$header="<?xmlversion=\"1.0\"encoding=\"%s\"?\>\n<Workbookxmlns=\"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;
//构造函数
publicfunction__construct(
$sEncoding='UTF-8',$bConvertTypes=false,$sWorksheetTitle='Table1')
{
$this->bConvertTypes=$bConvertTypes;
$this->setEncoding($sEncoding);
$this->setWorksheetTitle($sWorksheetTitle);
}
//设置编码,在构造函数里面默认的事UTF-8格式
publicfunctionsetEncoding($sEncoding)
{
$this->sEncoding=$sEncoding;
}
//设置excel的头
publicfunctionsetWorksheetTitle($title)
{
$title=preg_replace("/[\\\|:|\/|\?|\*|\[|\]]/","",$title);
$title=substr($title,0,31);
$this->sWorksheetTitle=$title;
}
//增加行函数(关键函数)
privatefunctionaddRow($array)
{
$cells="";//设置每个单元为空
foreach($arrayas$k=>$v)
{
$type='String';//默认类型是字符串
if($this->bConvertTypes===true&&is_numeric($v))://判断类型
{$type='Number';}
$v=htmlentities($v,ENT_COMPAT,$this->sEncoding);
$cells.="<Cell><Datass:Type=\"$type\">".$v."</Data></Cell>\n";
}
$this->lines[]="<Row>\n".$cells."</Row>\n";//写入数组
}
//增加数组
publicfunctionaddArray($array)
{
foreach($arrayas$k=>$v)
{$this->addRow($v);}
}
//导出xml
publicfunctiongenerateXML($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\"");
echostripslashes(sprintf($this->header,$this->sEncoding));
echo"\n<Worksheetss:Name=\"".$this->sWorksheetTitle."\">\n<Table>\n";
foreach($this->linesas$line)
echo$line;
echo"</Table>\n</Worksheet>\n";
echo$this->footer;
}
}
原理很简单,就是把数据数组,读出来,再用XML的标签封上,在用php自带的header()函数告诉游览器,就可以了。
调用:
publicfunctionimport()
{
$data=array(
1=>array('学校名称',"队伍名称")
);
foreach($this->teamas$key=>$value)
{
array_push($data,array($key,$value));
}
$xls=newExcel_XML('UTF-8',false,'MyTestSheet');//实例化函数
$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程序设计有所帮助。