header()实现PHP最简单的导出excel,不需要引入操作excel类库
最新的项目,因为涉及到资金,需要导出excel。先找到项目后台原本的导出功能,挺简陋的不满足项目要求,需要优化。它没有引入任何操作excel的类库,直接获取数据拼接,中间用iconv()函数将字符串从utf8编码转为gbk,然后echo打印出来,就变成导出excel。
然后我发现一句代码:
header("Content-Disposition: attachment; filename=refund_list.csv");
这里的refund_list.csv就是每次导出的excel文件名。参考到以前用PHP的下载头代码:
header("Content-type: text/plain");
header("Accept-Ranges: bytes");
header("Content-Disposition: attachment; filename=".$filename);
header("Cache-Control: must-revalidate, post-check=0, pre-check=0" );
header("Pragma: no-cache" );
header("Expires: 0" );
所以我猜代码中的这句header()代码也是类型下载头的代码,将PHP打印的数据转化为可下载的文件形式,然后通过“refund_list.csv”这里的后缀转化为excel。
为了证明我的猜测,我先百度了“Content-Disposition”,得到的结果:Content-Disposition为属性名,disposition-type是以什么方式下载,如attachment为以附件方式下载 。
然后我再将上面header()函数的文件名改为“.txt”,“.doc”分别测试,分别能导出txt文本文件和word文件,perfect
<?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;
?>
这是一段网上搜的测试代码。测试过程中会发现一些问题,导出的时候只是简单的将无格式数据粘贴进excel文件,怎么破!分享一下
在导出后会发现一个问题,如果数据是数字会出现一些意想不到的情况。比如,"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 下载的文件名*@examlpeexportExcel($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
(上面的方法可以解决简易导出excel又不想因为功能调用类库让程序臃肿的问题,不过具体开发过程中还需要多加测试,才能找到最优的解决办法....我先试试能不能满足我们项目开发需求,不行的话还是需要用到PHPexcel)
header()实现PHP最简单的导出excel,不需要引入操作excel类库相关推荐
- python如何操作excel数据_Python如何操作Excel
以上可以根据需求的不同,选择合适的工具,现在给大家主要介绍最常用的xlrd&xlwt&xlutils系统工具的使用 1. xlrd&xlwt&xlutils介绍 xlr ...
- php excel 页眉,PHP操作Excel
本次主要讲解PHP通过PHPExcel来操作excel,主要针对的人群是PHP新手或者急需要使用PHPExcel来操作excel的人群. 下载PHPExcel 首先需要从PHPExcel官网下载PHP ...
- python excel详解_python操作excel详解
前提: python操作excel需要使用的模块有xlrd.xlwt.xlutils.对excel进行读.写.更新操作.操作excel时需要先导入这些模块,demo如下: excel-读操作知识点: ...
- python做excel表格代码_python操作excel表格
我们在写测试用例的时候,是创建一个表格.xlsx,然后把各种条件加到这张表格中去,所以,如何对excel表格操作,是相当重要的一环,那么,接下来,这篇博客就直接教会大家如何通过python去处理平时工 ...
- excel表计算机实践操作,Excel电子表格计算机实践任务书.ppt
文档介绍: 计算机实践低辆嚏控榨菏辙歧俞准聘蝎宇珠课续沏仑窜磅吏嚏纺反氢哨美减柿荔羡匪Excel电子表格计算机实践任务书Excel电子表格计算机实践任务书1一.实践目的:1.通过计算机实践,学**** ...
- C#使用Excel的COM组件操作Excel
1.使用方法 Visual Studio 2005中默认提供了封装好的Microsoft Office 2003的.Net Excel编程模型. 大家可以看到名为"Microsoft Exc ...
- java 操作excel jxl_java 中JXL操作Excel实例详解
JXL操作Excel 前言: jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一 ...
- python的excel教程_python怎么操作Excel
大家好,我们今天来一起探索一下用Python怎么操作Excel文件.与word文件的操作库python-docx类似,Python也有专门的库为Excel文件的操作提供支持,这些库包括xlrd.xlw ...
- vb6将excel数据导入mysql_VB6操作EXCEL导入数据库
VB6操作EXCEL导入数据库 Private Function FunImpExcel(ByVal strFilePath As String) As Integer 'Excel文件格式 '第一行 ...
最新文章
- java datarow_DataSet DataTable DataRow 深入浅出
- 安全策略_实操教程丨使用Pod安全策略强化K8S安全
- ACM训练赛--递推专题
- 分布式数据库一定会替代Oracle吗?
- Git missing Change-Id in commit message footer解决方法
- 如何将静态网页部署到github上
- JS JQ 页面加载顺序方法的区别
- 使用JAVA实现语音朗读一段文本
- 解决android.view.AbsSavedState$1 cannot be cast to android.widget.CompoundButton$SavedState
- 模拟微博登陆,获取微博cookie
- python参数类型为uint8,将图像数据类型从uint16转换为uint8
- Paper:2020.02.09钟南山团队首篇新冠病毒论文《Clinical characteristics of 2019 novel coronavirus infection in China》
- 自定义绘制三阶B样条曲线
- 基础知识 | node js基础知识
- Vue组件,动画笔记,必看
- 媲美GoogleEarth的ArcGISEarth安装教程(附下载地址)
- 装机必备检测软件全集
- C++Primer Plus(第六版)第七章编程练习
- 一键 linux桌面安装vnc,Linux OpenVZ Debian 7 32/64bit环境一键安装VNC桌面环境教程
- 离职3天被20个同事集体拉黑:职场人情,远比你想象的残酷
热门文章
- 国动车CTCS-3列控系统和欧洲列车控制系统(ERTMS)视频对比
- 使用Python更快速地处理Excel
- HDU 1175 连连看【BFS】
- Android11.0 增加人脸解锁功能
- 2021-03-08NDVI(未完,待续)
- 协同软件是否将替代OA系统?
- 《通关!游戏设计之道》:突破创作障碍
- 推荐两款好用的企业文档管理软件
- 形如:1/a 的分数称为单位分数。 可以把1分解为若干个互不相同的单位分数之和。 例如: 1 = 1/2 + 1/3 + 1/9 + 1/18 1 = 1/2 + 1/3 + 1/10 + 1/1
- 在线 ocr 文字识别 和 图片色值选取