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_MySQL教程-第一天
Mar 18 PHP
php excel reader读取excel内容存入数据库实现代码
Dec 06 PHP
php Session存储到Redis的方法
Nov 04 PHP
PHP也能干大事 随机函数
Apr 14 PHP
Thinkphp+smarty+uploadify实现无刷新上传
Jul 30 PHP
PHP如何通过AJAX方式实现登录功能
Nov 23 PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
May 22 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
Nov 07 PHP
PHP+JS实现的实时搜索提示功能
Mar 13 PHP
Laravel框架自定义验证过程实例分析
Feb 01 PHP
php传值和传引用的区别点总结
Nov 19 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
基于python发送邮件的乱码问题的解决办法
2013/04/25 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
jQuery在html有效在jsp无效的原因及解决方法
2013/08/02 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
浅析Bootstrap验证控件的使用
2016/06/23 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
MUI实现上拉加载和下拉刷新效果
2017/06/30 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
express express-session的使用小结
2018/12/12 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
js实现点击生成随机div
2020/01/16 Javascript
vue addRoutes路由动态加载操作
2020/08/04 Javascript
JS+Canvas实现五子棋游戏
2020/08/26 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
在Django的视图中使用form对象的方法
2015/07/18 Python
Python3 Random模块代码详解
2017/12/04 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
通过实例解析Python调用json模块
2019/12/11 Python
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
银行爱岗敬业演讲稿
2014/05/05 职场文书
单位消防安全责任书
2014/07/23 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书