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 $_SERVER详解
Jan 16 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
Aug 21 PHP
php笔记之常用文件操作
Oct 12 PHP
PHP备份/还原MySQL数据库的代码
Jan 06 PHP
php打开文件fopen函数的使用说明
Jul 05 PHP
提高PHP编程效率的方法
Nov 07 PHP
php curl模拟post请求小实例
Nov 13 PHP
ThinkPHP的MVC开发机制实例解析
Aug 23 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
php使用递归计算文件夹大小
Dec 24 PHP
php ci 获取表单中多个同名input元素值的代码
Mar 25 PHP
PHP数组常用函数实例小结
Aug 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
php4的session功能评述(一)
2006/10/09 PHP
试用php中oci8扩展
2015/06/18 PHP
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
vue实现井字棋游戏
2020/09/29 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
Python多进程fork()函数详解
2019/02/22 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
HTML5学习笔记之html5与传统html区别
2016/01/06 HTML / CSS
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
实习生个人找工作的自我评价
2013/10/30 职场文书
邮政员工辞职信
2014/01/16 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
会计实训报告范文
2014/11/04 职场文书
事业单位考察材料范文
2014/12/25 职场文书
2015年教师节慰问信
2015/03/23 职场文书
Python max函数中key的用法及原理解析
2021/06/26 Python
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis