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的安全
Oct 09 PHP
PHP中GET变量的使用
Oct 09 PHP
支持oicq头像的留言簿(二)
Oct 09 PHP
php中用加号与用array_merge合并数组的区别深入分析
Jun 03 PHP
Laravel框架中扩展函数、扩展自定义类的方法
Sep 04 PHP
php内存缓存实现方法
Jan 24 PHP
php线性表的入栈与出栈实例分析
Jun 12 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
PHP如何将XML转成数组
Apr 04 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
Jan 20 PHP
微信推送功能实现方式图文详解
Jul 12 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中利用XML技术构造远程服务(上)
2006/10/09 PHP
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
php 猴子摘桃的算法
2017/06/20 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
javascript 学习之旅 (2)
2009/02/05 Javascript
一句话JavaScript表单验证代码
2009/08/02 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
Jquery 一次处理多个ajax请求的代码
2011/09/02 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
2016/07/24 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
前端js中的事件循环eventloop机制详解
2019/05/15 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
javascript自定义右键菜单插件
2019/12/16 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
python实现问号表达式(?)的方法
2013/11/27 Python
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
2020/03/23 Python
Belle Maison倍美丛官网:日本千趣会旗下邮购网站
2016/07/22 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
关于逃课的检讨书
2014/01/23 职场文书
暑期社会实践感言
2014/02/25 职场文书
《春雨》教学反思
2014/04/24 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
装配出错检讨书
2014/09/23 职场文书
春季运动会加油词
2015/07/18 职场文书