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 相关文章推荐
Thinkphp模板中使用自定义函数的方法
Sep 23 PHP
php生成图形验证码几种方法小结
Aug 15 PHP
PHP中数组的分组排序实例
Jun 01 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
Jul 29 PHP
php中simplexml_load_file函数用法实例
Nov 12 PHP
PHP date函数常用时间处理方法
May 11 PHP
php实现转换ubb代码的方法
Jun 18 PHP
php计算多维数组中所有值总和的方法
Jun 24 PHP
phpinfo无法显示的原因及解决办法
Feb 15 PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 14 PHP
PHP远程连接oracle数据库操作实现方法图文详解
Apr 11 PHP
php layui实现前端多图上传实例
Jul 30 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遍历目录与文件夹的多种方法详解
2013/11/14 PHP
php以post形式发送xml的方法
2014/11/04 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
基于jquery的模态div层弹出效果
2010/08/21 Javascript
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
Javascript实现重力弹跳拖拽运动效果示例
2013/06/28 Javascript
JQuery Highcharts 动态生成图表的方法
2013/11/15 Javascript
node.js中的console.error方法使用说明
2014/12/10 Javascript
一张Web前端的思维导图分享
2015/07/03 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
[01:23:35]Ti4主赛事胜者组 DK vs EG 1
2014/07/19 DOTA
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
Python栈类实例分析
2015/06/15 Python
Python ftp上传文件
2016/02/13 Python
python监控文件或目录变化
2016/06/07 Python
int在python中的含义以及用法
2019/06/27 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
基于python实现坦克大战游戏
2020/10/27 Python
保时捷设计:Porsche Design
2019/03/30 全球购物
《四季》教学反思
2014/04/08 职场文书
商场父亲节活动方案
2014/08/27 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书