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+AJAX实现无刷新注册(带用户名实时检测)
Dec 02 PHP
PHP 抓取网页图片并且另存为的实现代码
Mar 24 PHP
解析PHP中ob_start()函数的用法
Jun 24 PHP
php实现数组筛选奇数和偶数示例
Apr 11 PHP
php版淘宝网查询商品接口代码示例
Jun 17 PHP
PHPExcel内存泄漏问题解决方法
Jan 23 PHP
php实现俄罗斯乘法实例
Mar 07 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
Jan 07 PHP
php计算多个集合的笛卡尔积实例详解
Feb 16 PHP
Laravel中如何增加自定义全局函数详解
May 09 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
Laravel框架处理用户的请求操作详解
Dec 20 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
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
php设计模式 Decorator(装饰模式)
2011/06/26 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
JavaScript中使用Callback控制流程介绍
2015/03/16 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
2016/08/24 Javascript
bootstrap+jQuery实现的动态进度条功能示例
2017/05/25 jQuery
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
[01:25]2015国际邀请赛最佳短片奖——斧王《拆塔英雄:天赋异禀》
2015/09/22 DOTA
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
Django中的cookie和session
2019/08/27 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
简单了解Django项目应用创建过程
2020/07/06 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
python在协程中增加任务实例操作
2021/02/28 Python
瑞典首都斯德哥尔摩的多元奢侈时尚品牌:Acne Studios
2017/07/09 全球购物
Sneaker Studio匈牙利:购买运动鞋
2018/03/26 全球购物
软件缺陷的分类都有哪些
2014/08/22 面试题
自学考试自我鉴定范文
2013/09/26 职场文书
生产车间主管岗位职责
2013/12/28 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
毕业设计致谢语
2015/05/14 职场文书
保姆聘用合同
2015/09/21 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
MySQL学习总结-基础架构概述
2021/04/05 MySQL
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python
python基础之模块的导入
2021/10/24 Python
JavaScript实现栈结构详细过程
2021/12/06 Javascript