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 for 循环语句使用方法详细说明
May 09 PHP
谨慎使用PHP的引用原因分析
Sep 06 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
Jun 19 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
Jul 10 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
Apr 21 PHP
关于PHP文件的自动运行方法分析
May 13 PHP
Centos PHP 扩展Xchche的安装教程
Jul 09 PHP
Yii列表定义与使用分页方法小结(3种方法)
Jul 15 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
Paypal实现循环扣款(订阅)功能
Mar 23 PHP
PHP接口继承及接口多继承原理与实现方法详解
Oct 18 PHP
Smarty模板配置实例简析
Jul 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
1.PHP简介
2006/10/09 PHP
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
php date与gmdate的获取日期的区别
2010/02/08 PHP
php cookie工作原理与实例详解
2016/07/18 PHP
PHP中overload与override的区别
2017/02/13 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
js innerHTML 改变div内容的方法
2013/08/03 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
2014/09/04 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
JavaScript函数节流的两种写法
2017/04/07 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
微信小程序progress组件使用详解
2018/01/31 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
Angular Renderer (渲染器)的具体使用
2018/05/03 Javascript
详解JavaScript中的数组合并方法和对象合并方法
2018/05/11 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
python3实现暴力穷举博客园密码
2016/06/19 Python
使用Python实现简单的服务器功能
2017/08/25 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
Django 实现admin后台显示图片缩略图的例子
2019/07/28 Python
CSS3弹性盒模型开发笔记(一)
2016/04/26 HTML / CSS
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
Tom Dixon官网:英国照明及家具设计和制造公司
2019/03/01 全球购物
C#中的验证控件有几种
2014/03/08 面试题
商务英语专业应届毕业生求职信
2013/10/28 职场文书
趣味比赛活动方案
2014/02/15 职场文书
秋天的怀念教学反思
2014/04/28 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
导游词之珠海轮廓
2019/10/25 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫