PHP将数据导出Excel表中(投机型)
1、简介
如何利用最简单粗糙暴力的方法将数据写入Excel文件中呢?
因为ms word和excel的文档都支持html文本格式,因此我们可以基于这个原理采用html文本格式进行数据的输出。
在html中,我们只需要将数据照着所想要的顺序放进相应的html表格中即可。
我们采用PHP进行数据获取整理以及构造相应的html文本,最后通过字节流输出下载到用户本地。
2、代码
直接上代码,这是一个很简单的程序,里面都带有注释了。
ExportExcel.class.php文件
<?php
class ExportExcel{
/**
* @desc 将数据导出到Excel中
* @param $data array 设置表格数据
* @param $titlename string 设置head
* @param $title string 设置表头
* @param $filename 设置默认文件名
* @return 将字符串输出,即输出字节流,下载Excel文件
*/
public function excelData($data,$titlename,$title,$filename){
#xmlns即是xml的命名空间
$str = "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"\r\nxmlns:x=\"urn:schemas-microsoft-com:office:excel\"\r\nxmlns=\"http://www.w3.org/TR/REC-html40\">\r\n<head>\r\n<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>";
#以下构建一个html类型格式的表格
$str .= $title;
$str .="<table border=1><head>".$titlename."</head>";
foreach ($data as $key=> $rt )
{
$str .= "<tr>";
foreach ( $rt as $k => $v )
{
$str .= "<td>{$v}</td>";
}
$str .= "</tr>\n";
}
$str .= "</table></body></html>";
header( "Content-Type: application/vnd.ms-excel; name='excel'" ); #类型
header( "Content-type: application/octet-stream" ); #告诉浏览器响应的对象的类型(字节流、浏览器默认使用下载方式处理)
header( "Content-Disposition: attachment; filename=".$filename ); #不打开此文件,刺激浏览器弹出下载窗口、下载文件默认命名
header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
header( "Pragma: no-cache" ); #保证不被缓存或者说保证获取的是最新的数据
header( "Expires: 0" );
exit( $str );
} } ?>
<?php
$obj=new ExportExcel(); $data = array(
array('a11','a22','a33'),
array('b11','b22','b33'),
array('c11','c22','c33'),
array('d11','d22','d33'),
array('e11','e22','e33'),
array('f11','f22','f33'),
);
$excelHead = "这个是Excel表格标题";
$title = "我的Excel表"; #文件命名
$headtitle= "<tr><th colspan='3' >{$excelHead}</th></tr>";
$titlename = "<tr>
<th style='width:70px;'>表格1</th>
<th style='width:70px;'>表格2</th>
<th style='width:70px;'>表格3</th>
</tr>";
$filename = $title.".xls";
$obj->excelData($data,$titlename,$headtitle,$filename); ?>
3、测试
点击访问:
下载该Excel文件

成功后查看该文件:
进入后Excel提示说该文件格式与后缀名不一致,这也间接说明了我们所导出来的Excel文件仅仅只是个外表是Excel(实质是html文件),格式上并不是Excel文件。
点击是进入查看里面的内容,上看去挺像Excel的嘛,哈哈。就酱紫


更改后缀名为html进入查看:
你瞧,实质就是html文件嘛,只是Excel支持该格式而已。

4、参考文献
1. 《PHP导出Excel》
(以上是自己的一些见解,若有不足或者错误的地方请各位指出)
作者:那一叶随风 http://www.cnblogs.com/phpstudy2015-6/
原文地址:http://www.cnblogs.com/phpstudy2015-6/p/7260208.html
声明:本博客文章为原创,只代表本人在工作学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文链接
PHP将数据导出Excel表中(投机型)的更多相关文章
- ASP.NET 导出gridview中的数据到Excel表中,并对指定单元格换行操作
		
1. 使用NPOI读取及生成excel表. (1)导出Click事件: 获取DataTable; 给文件加文件名: string xlsxName = "xxx_" + DateT ...
 - 【ITOO 1】将List数据导出Excel表
		
需求描述:在课表导入的时候,首先给用户提供模板(excel),然后将用户填写好的数据读取到list集合中.再进行判空处赋值处理,以及去重处理.这篇博客,主要介绍读取excel表和导出excel表的方法 ...
 - 利用数据库管理工具(Navicat)导出数据到Excel表中
		
如果只是想把数据库表中数据简单导出来,可以利用数据库管理工具中的工具 1.先查询 2.在查询出结果中全选 3.导出向导 4.选择Excel 5.选择导出地址并命名
 - 关于导出Excel表中存在部门或用户数据权限问题
		
/** * 导出Controller */ @RequiresPermissions("xxx:weeklightlimit:download") @RequestMapping( ...
 - 选择性导出excel表中内容
		
package com.huawei.utils; import java.io.FileNotFoundException;import java.io.FileOutputStream;impor ...
 - 将数据 导出excel表格式
		
我的考试完提交生成的数据 这是我的考试题类型 //导出调查评议的数据 public function diaocha(){ $xlsName = '表格形式 调查评议 信息'; $xlsTitle = ...
 - mysql导出数据到excel表中
		
mysql> select b.username,a.subject,a.money,FROM_UNIXTIME(a.ctime) from shop_pay a INNER JOIN ...
 - 将从数据库中获取的数据写入到Excel表中
		
pom.xml文件写入代码,maven自动加载poi-3.1-beta2.jar <!-- https://mvnrepository.com/artifact/poi/poi --> & ...
 - thinkphp导入导出excel表单数据
		
在PHP项目经常要导入导出Excel表单. 先去下载PHPExcel类库文件,放到相应位置. 我在thinkphp框架中的位置为ThinkPHP/Library/Org/Util/ 导入 在页面上传e ...
 
随机推荐
- 《学习OpenCV3》第7章第4题-SVD奇异值分解的验算
			
原文题目: 中文翻译: 解题过程 d.使用OpenCV编写代码 , , , , ,); Mat A = static_cast< ...
 - API 接口规范
			
整体规范建议采用RESTful 方式来实施. 1. 协议 API与用户的通信协议,总是使用HTTPs协议,确保交互数据的传输安全. 2. 域名 应该尽量将API部署在专用域名之下. https://a ...
 - CSS3 @keyframes 规则
			
今天来给大家分享一下CSS3 @keyframes 规则! 在你了解CSS3 @keyframes 规则时我先来给大家说说什么是css3中的动画 动画是使元素从一种样式逐渐变化为另一种样式的效果. 您 ...
 - MongoDB--架构搭建(主从、副本集)之主从
			
此章节讲述主从架构 主从架构 -- 目前已经不建议使用,推荐使用复制集 主从配置可以在配置文件中配置 从节点可以在启动之后使用命令追加主节点,db.source.insert({"host ...
 - java中方法总结(每周更新)
			
1.URLEncoder.encode(username,"utf-8")将"utf-8"编码的username先解码,然后再采用URL编码 2.URLDeco ...
 - 【LeetCode】168. Excel Sheet Column Title
			
题目: Given a positive integer, return its corresponding column title as appear in an Excel sheet. For ...
 - VUE2.0+VUE-Router做一个图片上传预览的组件
			
之前发了一篇关于自己看待前端组件化的文章,但是由于学习和实践的业务逻辑差异,所以自己练习的一些demo逻辑比较简单,打算用vue重构现在公司做的项目,所以在一些小的功能页面上使用vue来做的,现在写的 ...
 - MinGW(GCC)编译DLL文件
			
这两天用CB(Code::Blocks)写个小程序,要编译出DLL供VB(6)使用.CB使用mingw-gcc作为编译器,在库文件的产出上跟VC.VS之类的IDE略有不同. 由于C语言的基础知识不是太 ...
 - ubuntu12.0.4安装启动后无法进入图形操作界面
			
在VMware10.0.4虚拟机上安装ubuntu12.0.4版本后,启动linux后,无法进入图形界面,但是可以进入字符界面.通过查阅网上资料,有人说是VMware的3D图形加速没有关闭,于是通过查 ...
 - 使用镜像仓库托管自己构建的Docker镜像
			
自己构建的Docker镜像,默认存储在本机中,Docker有提供某些方式分享这些镜像,但不是主流的镜像分享方式,也有违于开源社区的共享精神. 本文介绍如何使用GitHub托管Dockerfile:使用 ...