用Simple Excel导出xls实现方法


Posted in PHP onDecember 06, 2012

因为前几天写了篇文章,用php-excel-reader类导入excel内容,顺便说些excel导出问题,我用的是simple excel,一个很简单的导出xls类,特好用!
simple excel源码如下:

<?php 
/** 
* Simple excel generating from PHP5 
* 
* @package Utilities 
* @license http://www.opensource.org/licenses/mit-license.php 
* @author Oliver Schwarz <oliver.schwarz@gmail.com> 
* @version 1.0 
*/ 
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; 
private $sWorksheetTitle; 
public function __construct($sEncoding = 'UTF-8', $bConvertTypes = false, $sWorksheetTitle = 'Table1') 
{ 
$this->bConvertTypes = $bConvertTypes; 
$this->setEncoding($sEncoding); 
$this->setWorksheetTitle($sWorksheetTitle); 
} 
public function setEncoding($sEncoding) 
{ 
$this->sEncoding = $sEncoding; 
} 
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'; 
endif; 
$v = htmlentities($v, ENT_COMPAT, $this->sEncoding); 
$cells .= "<Cell><Data ss:Type=\"$type\">" . $v . "</Data></Cell>\n"; 
endforeach; 
$this->lines[] = "<Row>\n" . $cells . "</Row>\n"; 
} 
public function addArray ($array) 
{ 
foreach ($array as $k => $v) 
$this->addRow ($v); 
} 
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; 
} 
} 
?>

使用php案例如下:
<?php 
/** 
* @author mckee 
* @blog www.phpddt.com 
*/ 
require_once 'excel.class.php'; 
$xls = new Excel_Xml('UTF-8',false,'测试'); 
$data = array( 
1 => array('名称','地址'), 
2 => array('php点点通','www.phpddt.com'), 
3 => array('百度','www.baidu.com') 
); 
$xls->addArray($data); 
$xls->generateXML('name4test'); ?>

导出结果如下图:
用Simple Excel导出xls实现方法
PHP 相关文章推荐
php下通过POST还是GET来传值
Jun 05 PHP
PHP foreach循环使用详解与实例代码
May 08 PHP
php 字符串替换的方法
Jan 10 PHP
解析argc argv在php中的应用
Jun 24 PHP
php数组去重实例及分析
Nov 26 PHP
PHP跨平台获取服务器IP地址自定义函数分享
Dec 29 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
Dec 28 PHP
php使用curl通过代理获取数据的实现方法
May 16 PHP
php观察者模式应用场景实例详解
Feb 03 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
May 21 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 PHP
php读取EXCEL文件 php excelreader读取excel文件
Dec 06 #PHP
php excel reader读取excel内容存入数据库实现代码
Dec 06 #PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
Dec 06 #PHP
php单例模式实现(对象只被创建一次)
Dec 05 #PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 #PHP
php自动给文章加关键词链接的函数代码
Nov 29 #PHP
PHP文章按日期(月日)SQL归档语句
Nov 29 #PHP
You might like
PHP新手上路(九)
2006/10/09 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
$.ajax json数据传递方法
2008/11/19 Javascript
JS高级笔记
2011/07/13 Javascript
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
2019/03/29 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
2019/04/10 jQuery
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
pytorch使用Variable实现线性回归
2019/05/21 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
python 5个顶级异步框架推荐
2020/09/09 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
运动会方队口号
2014/06/07 职场文书
党员个人对照检查材料
2014/10/01 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
教学督导岗位职责
2015/04/10 职场文书
学校运动会简讯
2015/07/20 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
导游词之桂林
2019/08/20 职场文书
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android
关于python pygame游戏进行声音添加的技巧
2021/10/24 Python
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android