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


Posted in PHP onOctober 15, 2016

本文实例讲述了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 相关文章推荐
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
Oct 09 PHP
WML,Apache,和 PHP 的介绍
Oct 09 PHP
php+mysql实现无限级分类 | 树型显示分类关系
Nov 19 PHP
php的access操作类
Apr 09 PHP
ini_set的用法介绍
Jan 07 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
php+mysqli批量查询多张表数据的方法
Jan 29 PHP
php与Mysql的一些简单的操作
Feb 26 PHP
php实现约瑟夫问题的方法小结
Mar 23 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
May 13 PHP
php实现的双色球算法示例
Jun 20 PHP
使用Laravel中的查询构造器实现增删改查功能
Sep 03 PHP
PHP数组操作简单案例分析
Oct 15 #PHP
PHP链表操作简单示例
Oct 15 #PHP
PHP在线打包下载功能示例
Oct 15 #PHP
PHP文件上传处理案例分析
Oct 15 #PHP
PHP小偷程序的设计与实现方法详解
Oct 15 #PHP
基于php判断客户端类型
Oct 14 #PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
Oct 14 #PHP
You might like
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
php命令行用法入门实例教程
2014/10/27 PHP
php里array_work用法实例分析
2015/07/13 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
yii2中的rules 自定义验证规则详解
2016/04/19 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
Jquery中children与find之间的区别详细解析
2013/11/29 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
JS中超越现实的匿名函数用法实例分析
2019/06/21 Javascript
微信小程序全局变量改变监听的实现方法
2019/07/15 Javascript
Python os模块介绍
2014/11/30 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
python3实现SMTP发送邮件详细教程
2018/06/19 Python
python区块及区块链的开发详解
2019/07/03 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
销售简历自我评价
2014/01/24 职场文书
事业单位竞聘上岗实施方案
2014/03/28 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
2014会计年终工作总结
2014/12/20 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers