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 递归效率分析
Nov 24 PHP
解析php5配置使用pdo
Jul 03 PHP
本地计算机无法启动Apache故障处理
Aug 08 PHP
php几个预定义变量$_SERVER用法小结
Nov 07 PHP
Yii配置文件用法详解
Dec 04 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
May 11 PHP
PHP生成树的方法
Jul 28 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
Sep 29 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
Sep 30 PHP
PHP两个n位的二进制整数相加问题的解决
Aug 26 PHP
redis+php实现微博(三)微博列表功能详解
Sep 23 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
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
2013/04/13 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
2014/06/12 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
2018/04/20 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
Jquery 一次处理多个ajax请求的代码
2011/09/02 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
jQuery实现伪分页的方法分享
2016/02/17 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
js 奇葩技巧之隐藏代码
2017/08/11 Javascript
Nodejs中使用phantom将html转为pdf或图片格式的方法
2017/09/18 NodeJs
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
[00:38]TI珍贵瞬间系列(二):笑
2020/08/26 DOTA
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
Python bisect模块原理及常见实例
2020/06/17 Python
Python如何telnet到网络设备
2021/02/18 Python
介绍一下UNIX启动过程
2013/11/14 面试题
中级会计职业生涯规划范文
2014/01/16 职场文书
大学生毕业鉴定
2014/01/31 职场文书
机关门卫制度
2014/02/01 职场文书
电子信息工程自荐信
2014/05/26 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
2015年团支书工作总结
2015/04/03 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书