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 XML操作类DOMDocument
Dec 16 PHP
php小偷相关截取函数备忘
Nov 28 PHP
PHP高自定义性安全验证码代码
Nov 27 PHP
Zend Studio 实用快捷键一览表(精心整理)
Aug 10 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 PHP
php实现通用的信用卡验证类
Mar 24 PHP
PHP云打印类完整示例
Oct 15 PHP
详谈PHP中的密码安全性Password Hashing
Feb 04 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
Jul 27 PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 PHP
PHP执行普通shell命令流程解析
Aug 24 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
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
layui实现数据分页功能
2019/07/27 Javascript
Angular8路由守卫原理和使用方法
2019/08/29 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
js实现简单进度条效果
2020/03/25 Javascript
[04:44]显微镜下的DOTA2第二期——你所没有注意到的细节
2014/06/20 DOTA
python获取外网ip地址的方法总结
2015/07/02 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
2016/05/05 Python
Python贪吃蛇游戏编写代码
2020/10/26 Python
pytz格式化北京时间多出6分钟问题的解决方法
2019/06/21 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
仿酷狗html5手机音乐播放器主要部分代码
2013/05/15 HTML / CSS
使用html2canvas实现将html内容写入到canvas中生成图片
2020/01/03 HTML / CSS
一个基于canvas的移动端图片编辑器的实现
2020/10/28 HTML / CSS
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
syb养殖创业计划书
2014/01/09 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
产品调价通知函
2015/04/20 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
留学文书中的个人陈述,应该注意哪些问题?
2019/08/23 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL