专栏首页技术博文最简单的php导出excel文件方法

最简单的php导出excel文件方法

网上有很多php操作excel或其他文件的类库,也做的很完善。比如无比风骚的PHPExcel,官方网站:http://www.codeplex.com/PHPExcel ,pear的Spreadsheet_Excel_Writer类等。然而我们只是用到其中一部分功能,这就会让程序显的有些臃肿。在你调用这些类库的时候,不管你是多简单的操作,他都会消耗巨大的内存,这对我们来说是很不可取的。

    比如我需要一个做php导出 excel的的程序,只需要把相关的数据导出到excel表就可以了,这么简单的操作就不需要用那些类库什么的了。直接用header的方式就可以了:header("Content-type:application/vnd.ms-excel"); 

<?php 
header("Content-type:application/vnd.ms-excel"); 
header("Content-Disposition:attachment;filename=Export_test.xls"); 
$tab="\t"; $br="\n";
$head="编号".$tab."备注".$br;
//输出内容如下:  
echo $head.$br;
echo  "test321318312".$tab;  
echo  "string1"; 
echo  $br;

echo  "330181199006061234".$tab;  //直接输出会被Excel识别为数字类型
echo  "number"; 
echo  $br;

echo  "=\"330181199006061234\"".$tab;  //原样输出需要处理
echo  "string2"; 
echo  $br;
?>

  在导出后会发现一个问题,如果数据是数字会出现一些意想不到的情况。比如,"012345",在excel中会变成"12345";如果输入身份证号码这样的长数字,在excel中会用科学计数法表示出来,并且最后的四位数字会出现偏差,变位0000等情况。这就需要把单元格设置为文本格式,方法是

echo  "=\"330181199006061234\""

如果程序是utf-8编码的,还需要用iconv函数去转码,不然是会乱码的,乱码的。

iconv("UTF-8", "GB2312", $yourstr);

如果导出中文时出现乱码,可以尝试将字符串转换成gb2312,例如下面就把$yourStr从utf-8转换成了gb2312:

$yourStr = mb_convert_encoding(”gb2312″, “UTF-8″, $yourStr);

另word格式导入类似,,指定header就可以了:

header("Content-Type:   application/msword");        
header("Content-Disposition:   attachment;   filename=doc.doc");  

 php代码:

<?php

	
	/**
	 * exportExcel($data,$title,$filename);
    * 导出数据为excel表格
    *@param $data    一个二维数组,结构如同从数据库查出来的数组
    *@param $title   excel的第一行标题,一个数组,如果为空则没有标题
    *@param $filename 下载的文件名
    *@examlpe 
    exportExcel($arr,array('id','账户','密码','昵称'),'文件名!');
*/
    function exportExcel($data=array(),$title=array(),$filename='report')
	{
		header("Content-type:application/octet-stream");
		header("Accept-Ranges:bytes");
		header("Content-type:application/vnd.ms-excel");  
		header("Content-Disposition:attachment;filename=".$filename.".xls");
		header("Pragma: no-cache");
		header("Expires: 0");
		//导出xls开始
		if (!empty($title))
		{
			foreach ($title as $k => $v)
			{
				$title[$k]=iconv("UTF-8", "GB2312",$v);
			}
			$title= implode("\t", $title);
			echo "$title\n";
		}
		if (!empty($data))
		{
			foreach($data as $key=>$val)
			{
				foreach ($val as $ck => $cv)
				{
					$data[$key][$ck]=iconv("UTF-8", "GB2312", $cv);
				}
			 $data[$key]=implode("\t", $data[$key]);      
			}
			
			echo implode("\n",$data);
		}
	}
	
$total = array();
$fp = fopen('card.txt', 'r');
$i = 0;
while ($v = fgets($fp, 100)) 
{
	$arr = explode(",", trim($v));
	$total[$i]["cid"]			= "=\"".$arr[0]."\"";
	$total[$i]["code"]			= "=\"".$arr[1]."\"";
	$total[$i]["ctime"]			= '2014-09-10 14:06:29';
	$total[$i]["expireday"]		= '2015-12-31 23:59:59';
	$i++;
}
exportExcel($total, array('卡','生成码','开始时间','有效时间'), 'card');
exit;

card.txt文件:

900010061112,22279892213248,2013-06-30
900010061113,52139844827982,2013-06-30
900010061114,67313895480603,2013-06-30
900010061115,66178571957378,2013-06-30
900010061116,78951625651967,2013-06-30
900010061117,73835952566949,2013-06-30
900010061118,74436659365440,2013-06-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • excel导出类

    /** * 导出数据为excel表格 *@param $data 一个二维数组,结构如同从数据库查出来的数组 *@param $t...

    joshua317
  • Discuz!X3.1 全新安装图文教程

    Discuz! 是腾讯旗下 Comsenz 公司推出的以社区为基础的专业建站平台,帮助网站实现一站式服务。让论坛(BBS)、个人空间(SNS)、门户(Porta...

    joshua317
  • excel导入与导出

    基本上导出的文件分为两种: 1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已。修改这种文件后再保存...

    joshua317
  • PHP算法 [杨辉三角的求解]

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

    泥豆芽儿 MT
  • Thinkphp+layui动态表格的使用

    今天早上想将后台中的表格部分使用layui的动态表格模块来实现,早上简单的看了下手册,晚上回家详细的看了手册,写了代码,实现了功能。下面直接上代码及效果图:

    申霖
  • 04.Xpath的使用

    见贤思齊
  • 学界 | 从NIPS到NeurIP 20年数据分析:MIT贡献最大,吴恩达、Hinton为最TOP作者

    NeurIPS(前称NIPS)可谓人工智能年度最大盛会。每年的圣诞前夕,全球的人工智能爱好者和科学家都聚集起来发布最新研究,并进行热烈探讨。这不仅是一次大的pa...

    大数据文摘
  • SSH服务 AddressFamily 不要乱改

    前不久自己乱改CentOS6.10的ssh配置文件/etc/ssh/sshd_config,不小心在AddressFamily inet后面加了个6变成了Add...

    我爱你的一诺
  • 为什么说流处理即未来?

    Flink电子月刊第二季《重新定义计算:Apache Flink 实践》正式发布了,该月刊融合了 Apache Flink 在国内各大互联网公司的大规模实践和 ...

    zhisheng
  • 爬虫网页解析之css用法及实战爬取中国校花网

    我们都知道,爬虫获取页面的响应之后,最关键的就是如何从繁杂的网页中把我们需要的数据提取出来,

    Python编程与实战

扫码关注云+社区

领取腾讯云代金券