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 文件缓存的性能测试
Apr 25 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
Jun 24 PHP
PHP中将ip地址转成十进制数的两种实用方法
Aug 15 PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 PHP
php用正则判断是否为数字的方法
Mar 25 PHP
Yii2.0 模态弹出框+ajax提交表单
May 22 PHP
php实现微信模板消息推送
Mar 30 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
Yii框架自定义数据库操作组件示例
Nov 11 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 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调用Oracle存储过程
2006/10/09 PHP
PHP实现采集中国天气网未来7天天气
2014/10/15 PHP
php pthreads多线程的安装与使用
2016/01/19 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
JavaScript 序列化对象实现代码
2009/12/18 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
javascript几个易错点记录
2014/11/26 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
[40:19]2018完美盛典CS.GO表演赛
2018/12/17 DOTA
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
深入解析Python中的集合类型操作符
2015/08/19 Python
简单谈谈Python中的反转字符串问题
2016/10/24 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
Python中format()格式输出全解
2019/04/12 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
Marlies Dekkers内衣法国官方网上商店:国际知名的荷兰内衣品牌
2019/03/18 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
EJB实例的生命周期
2016/10/28 面试题
人力资源专员岗位职责
2014/01/30 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
作风建设剖析材料
2014/10/06 职场文书
教师师德表现自我评价
2015/03/05 职场文书
Python离线安装openpyxl模块的步骤
2021/03/30 Python
Feign调用传输文件异常的解决
2021/06/24 Java/Android