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批量缩放图片的代码[ini参数控制]
Feb 11 PHP
php 数组的一个悲剧?
May 11 PHP
php xml常用函数的集合(比较详细)
Jun 06 PHP
PHP开发注意事项总结
Feb 04 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
Oct 01 PHP
yii去掉必填项中星号的方法
Dec 28 PHP
PHP Callable强制指定回调类型的方法
Aug 30 PHP
PHP入门教程之会话控制技巧(cookie与session)
Sep 11 PHP
在laravel中使用Symfony的Crawler组件分析HTML
Jun 19 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
Aug 11 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
Apr 30 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
Oct 10 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实现的在线人员函数库
2008/04/09 PHP
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
js判断变量是否空值的代码
2008/10/26 Javascript
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
lyhucSelect基于Jquery的Select数据联动插件
2011/03/29 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
实现vuex原理的示例
2020/10/21 Javascript
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python找出list中最常出现元素的方法
2016/06/14 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
python对list中的每个元素进行某种操作的方法
2018/06/29 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
世界上最具创新性的增强型知名运动品牌:Proviz
2018/04/03 全球购物
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
培训演讲稿范文
2014/01/12 职场文书
本科生职业生涯规划书范文
2014/01/21 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
三方合作协议书范本
2014/04/18 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
2014年度考核工作总结
2014/12/24 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
2016年党员创先争优承诺书
2016/03/25 职场文书
python实现双向链表原理
2022/05/25 Python