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 相关文章推荐
mysql 全文搜索 技巧
Apr 27 PHP
程序员编程十条戒律
Jul 09 PHP
PHP 巧用数组降低程序的时间复杂度
Jan 01 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
解析如何用php screw加密php源代码
Jun 20 PHP
destoon实现商铺管理主页设置增加新菜单的方法
Jun 26 PHP
PHP统计目录大小的自定义函数分享
Nov 18 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 PHP
php实现xml转换数组的方法示例
Feb 03 PHP
thinkPHP框架实现的短信接口验证码功能示例
Jun 20 PHP
laravel 实现根据字段不同值做不同查询
Oct 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
微博短链接算法php版本实现代码
2012/09/15 PHP
你所要知道JS(DHTML)中的一些技巧
2007/01/09 Javascript
很好用的js日历算法详细代码
2013/03/07 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
JS字符串按逗号和回车分隔的方法
2017/04/25 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
Python基本语法经典教程
2016/03/11 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
python修改文件内容的3种方法详解
2019/11/15 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
Django Model层F,Q对象和聚合函数原理解析
2020/11/12 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
浅谈HTML5新增及移除的元素
2016/06/27 HTML / CSS
德国帽子专家:Hutshopping
2019/11/03 全球购物
大学生标准推荐信范文
2013/11/25 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
护理专科毕业自荐信范文
2014/04/21 职场文书
消防宣传口号
2014/06/16 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
2015暑假假期总结
2015/07/13 职场文书
如何用python识别滑块验证码中的缺口
2021/04/01 Python
mysql数据库入门第一步之创建表
2021/05/14 MySQL