php 操作excel文件的方法小结


Posted in PHP onDecember 31, 2009

一、php,不用COM,生成excel文件

<? 
header("Content-type:application/vnd.ms-excel"); 
header("Content-Disposition:filename=test.xls"); 
echo "test1\t"; 
echo "test2\t\n"; 
echo "test1\t"; 
echo "test2\t\n"; 
echo "test1\t"; 
echo "test2\t\n"; 
echo "test1\t"; 
echo "test2\t\n"; 
echo "test1\t"; 
echo "test2\t\n"; 
echo "test1\t"; 
echo "test2\t\n"; 
?>

在php环境运行上面的代码,大家就可以看到浏览器询问用户是否下载excel文档,点击保存,硬盘上就多了一个excel的文件,使用excel打开就会看到最终的结果,怎么样不错吧。

其实在做真正的应用的时候,大家可以将数据从数据库中取出,然后按照每一列数据结束后加\t,每一行数据结束后加\n的方法echo出来,在php的开头用header("Content-type:application/vnd.ms-excel");表示输出的是excel文件,用header("Content-Disposition:filename=test.xls");表示输出的文件名为text.xls。这样就ok了。

我们更可以修改header让他输出更多格式的文件,这样php在处理各种类型文件方面就更加方便了.
二、用PHP将mysql数据表转换为excel文件格式

<?php 
$DB_Server = "localhost"; 
$DB_Username = "mydowns"; 
$DB_Password = ""; 
$DB_DBName = "mydowns"; 
$DB_TBLName = "user"; 
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) 
or die("Couldn@#t connect."); 
$Db = @mysql_select_db($DB_DBName, $Connect) 
or die("Couldn@#t select database."); 
$file_type = "vnd.ms-excel"; 
$file_ending = "xls"; 
header("Content-Type: application/$file_type"); 
header("Content-Disposition: attachment; filename=mydowns.$file_ending"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
$now_date = date(@#Y-m-d H:i@#); 
$title = "数据库名:$DB_DBName,数据表:$DB_TBLName,备份日期:$now_date"; 
$sql = "Select * from $DB_TBLName"; 
$ALT_Db = @mysql_select_db($DB_DBName, $Connect) 
or die("Couldn@#t select database"); 
$result = @mysql_query($sql,$Connect) 
or die(mysql_error()); 
echo("$title\n"); 
$sep = "\t"; 
for ($i = 0; $i < mysql_num_fields($result); $i++) { 
echo mysql_field_name($result,$i) . "\t"; 
} 
print("\n"); 
$i = 0; 
while($row = mysql_fetch_row($result)) 
{ 
$schema_insert = ""; 
for($j=0; $j<mysql_num_fields($result);$j++) 
{ 
if(!isset($row[$j])) 
$schema_insert .= "NULL".$sep; 
elseif ($row[$j] != "") 
$schema_insert .= "$row[$j]".$sep; 
else 
$schema_insert .= "".$sep; 
} 
$schema_insert = str_replace($sep."$", "", $schema_insert); 
$schema_insert .= "\t"; 
print(trim($schema_insert)); 
print "\n"; 
$i++; 
} 
return (true); 
?>

三、PHP操作excel的一个例子(用COM对象生成excel)
这是对于那些只喜欢简单处理一下excel朋友来说的
<?php 
//定义一个excel文件 
$workbook = "C:/My Documents/test.xls"; 
$sheet = "Sheet1"; 
//生成一个com对象$ex 
$ex = new COM("Excel.sheet") or Die ("连不上!!!"); 
//打开一个excel文件 
$book = $ex->application->Workbooks->Open($workbook) or Die ("打不开!!!"); 
$sheets = $book->Worksheets($sheet); 
$sheets->activate; 
//获取一个单元格 
$cell = $sheets->Cells(5,5); 
$cell->activate; 
//给该单元格赋值 
$cell->value = 999; 
//保存为另一文件newtest.xls 
$ex->Application->ActiveWorkbook->SaveAs("newtest.xls"); 
//关掉excel,如果想看效果,则注释掉下面两行,由用户手动关掉excel 
$ex->Application->ActiveWorkbook->Close("False"); 
unset ($ex); 
?>

四、php生成EXCEL的东东
可以通过PHP来产生EXCEL档。
----------------------------
Excel Functions
----------------------------
将下面的代码存为excel.php ,然后在页面中包括进来
然后调用
1. Call xlsBOF()
2. 将一些内容写入到xlswritenunber() 或者 xlswritelabel()中.
3.然后调用 Call xlsEOF()
也可以用 fwrite 函数直接写到服务器上,而不是用echo 仅仅在浏览器上显示。
<?php 
// ----- begin of function library ----- 
// Excel begin of file header 
function xlsBOF() { 
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0); 
return; 
} 
// Excel end of file footer 
function xlsEOF() { 
echo pack("ss", 0x0A, 0x00); 
return; 
} 
// Function to write a Number (double) into Row, Col 
function xlsWriteNumber($Row, $Col, $Value) { 
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0); 
echo pack("d", $Value); 
return; 
} 
// Function to write a label (text) into Row, Col 
function xlsWriteLabel($Row, $Col, $Value ) { 
$L = strlen($Value); 
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L); 
echo $Value; 
return; 
} 
// ----- end of function library ----- 
?> 
// 
// To display the contents directly in a MIME compatible browser 
// add the following lines on TOP of your PHP file: 
<?php 
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT"); 
header ("Cache-Control: no-cache, must-revalidate"); 
header ("Pragma: no-cache"); 
header (@#Content-type: application/x-msexcel@#); 
header ("Content-Disposition: attachment; filename=EmplList.xls" ); 
header ("Content-Description: PHP/INTERBASE Generated Data" ); 
// 
// the next lines demonstrate the generation of the Excel stream 
// 
xlsBOF(); // begin Excel stream 
xlsWriteLabel(0,0,"This is a label"); // write a label in A1, use for dates too 
xlsWriteNumber(0,1,9999); // write a number B1 
xlsEOF(); // close the stream 
?>
PHP 相关文章推荐
使用PHP批量生成随机用户名
Jul 10 PHP
PHP 高级课程笔记 面向对象
Jun 21 PHP
php自定义函数之递归删除文件及目录
Aug 08 PHP
PHP父类调用子类方法的代码例子
Apr 09 PHP
ThinkPHP3.1.3版本新特性概述
Jun 19 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
Feb 17 PHP
php批量删除操作代码分享
Feb 26 PHP
Lumen timezone 时区设置方法(慢了8个小时)
Jan 20 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
PHP实现时间日期友好显示实现代码
Sep 08 PHP
PHP编程过程中需要了解的this,self,parent的区别
Dec 30 #PHP
用php实现让页面只能被百度gogole蜘蛛访问的方法
Dec 29 #PHP
PHP类的使用 实例代码讲解
Dec 28 #PHP
php 多线程上下文中安全写文件实现代码
Dec 28 #PHP
PHP 获取目录下的图片并随机显示的代码
Dec 28 #PHP
phpMyAdmin链接MySql错误 个人解决方案
Dec 28 #PHP
php 需要掌握的东西 不做浮躁的人
Dec 28 #PHP
You might like
十天学会php之第一天
2006/10/09 PHP
php set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
Look And Say 序列php实现代码
2011/05/22 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
PHP运用foreach神奇的转换数组(实例讲解)
2018/02/01 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
7个Javascript地图脚本整理
2009/10/20 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
jQuery实现自定义checkbox和radio样式
2015/07/13 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
详解webpack打包vue时提取css
2017/05/26 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
[01:20]DOTA2更新全新英雄 天涯墨客现已加入游戏
2018/08/25 DOTA
Python备份Mysql脚本
2008/08/11 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
详解python3中zipfile模块用法
2018/06/18 Python
python处理大日志文件
2019/07/23 Python
python中hasattr()、getattr()、setattr()函数的使用
2019/08/16 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
Python使用Matlab命令过程解析
2020/06/04 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
《果园机器人》教学反思
2014/04/13 职场文书
《观舞记》教学反思
2014/04/16 职场文书
React四级菜单的实现
2022/04/08 Javascript
Nginx限流和黑名单配置
2022/05/20 Servers