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(2)――PHP类型
Feb 15 PHP
PHP的SQL注入实现(测试代码安全不错)
Feb 27 PHP
PHP使用数组实现队列
Feb 05 PHP
php获取网页请求状态程序示例
Jun 17 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
Oct 15 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
解决微信授权回调页面域名只能设置一个的问题
Dec 11 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP attributes()函数讲解
Feb 03 PHP
php实现的表单验证类完整示例
Aug 13 PHP
PHP dirname(__FILE__)原理及用法解析
Oct 28 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
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
充分发挥Node.js程序性能的一些方法介绍
2015/06/23 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
2016/05/15 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
JS实现图片切换效果
2018/11/17 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
Element el-button 按钮组件的使用详解
2021/02/01 Javascript
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
python使用requests模块实现爬取电影天堂最新电影信息
2019/04/03 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
Python换行与不换行的输出实例
2020/02/19 Python
python定义类的简单用法
2020/07/24 Python
医院护士求职自荐信格式
2013/09/21 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
项目合作意向书范本
2014/04/01 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
公司活动总结怎么写
2014/06/25 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android