PHP导出excel文件
现在教教你如何导入excel文件:
在我的文件储存里面有一个com文件夹的,将其解压放在ThinkPHP/Library/文件夹里面,然后就是写控制器啦!去调用这个插件:
<?php namespace Admin\Controller; use Think\Controller; class ExcelController extends CommonController { private function write_excel($id,$savename=null) { import('Com.PHPExcel'); //引入excel import('Com.PHPExcel.IOFactory'); import('Com.PHPExcel.Writer.Excel5'); $PHPExcel = new \PHPExcel(); $PHPExcel->getActiveSheet()->setCellValue('A1', '姓名'); $PHPExcel->getActiveSheet()->setCellValue('B1', 'ICCID'); $PHPExcel->getActiveSheet()->setCellValue('C1', '手机号码'); $abc = array(); $res = D('customer')->where("id in ($id)")->order('id asc')->select(); // var_dump($res);die; if($res){ $i = 2; foreach ($res as $v) { $PHPExcel->getActiveSheet()->setCellValue('A'.$i,$v['name']); $PHPExcel->getActiveSheet()->setCellValue('B'.$i,$v['iccid']); $PHPExcel->getActiveSheet()->setCellValue('C'.$i,$v['mobile']); if($v['option']){ $option = unserialize($v['option']); foreach ($option as $key => $value) { if(!in_array($key,$abc)){ $abc[] = $key; } $key2 = chr(ord($key)+3); $PHPExcel->getActiveSheet()->setCellValue($key2.$i,$value); } } $i++; } foreach ($abc as $v) { $k = chr(ord($v)+3); $PHPExcel->getActiveSheet()->setCellValue($k.'1',$v); } $excel = D('game')->field('excel')->where($game_id)->find(); $savename = $savename ? $savename : $excel; if(is_array($savename)){ $savename = C('UNLINK_PATH').$savename['excel']; } if(file_exists($savename)){ unlink($savename); } $write = new \PHPExcel_Writer_Excel5($PHPExcel); header("Pragma: no-cache"); $write->save($savename); return true; }else{ return $res; } } public function down_load()//当点击导出操作按钮时候就会调用这个方法 { // var_dump($_POST);die; // $id = intval($_GET['id']);//获取id $id=implode(',',$_POST['id']); //var_dump($id);die; //$id=$_POST['id']; if($id){ $res = D('customer')->field('name,iccid,mobile')->where("id in ($id)")->select(); //$file = C('UNLINK_PATH').$res['mobile']; $file = C('UNLINK_PATH').uniqid(); $this->write_excel($id,$file); //$fileName = $res['name'].'.xls'; $fileName = uniqid().'.xls'; $fp = fopen($file,'rb'); if(!$fp){ header('HTTP/1.1 404 Not Found'); echo "Error: 404 Not Found.(server file path error)<!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding -->"; exit; } $encoded_filename = urlencode($fileName); $encoded_filename = str_replace("+", "%20", $encoded_filename); header('HTTP/1.1 200 OK'); header( "Pragma: public" ); header( "Expires: 0" ); header("Content-type: application/octet-stream"); header("Content-Length: ".filesize($file)); header("Accept-Ranges: bytes"); header("Accept-Length: ".filesize($file)); $ua = $_SERVER["HTTP_USER_AGENT"]; if (preg_match("/MSIE/", $ua)) { header('Content-Disposition: attachment; filename="' . $encoded_filename . '"'); } else if (preg_match("/Firefox/", $ua)) { header('Content-Disposition: attachment; filename*="utf8\'\'' . $fileName . '"'); } else { header('Content-Disposition: attachment; filename="' . $fileName . '"'); } ob_start(); ob_clean(); flush(); fpassthru($fp); } } }
控制器里面有两个方法,传入需要查询的数据的id数值,先调用下面的那个function:
write_excel方法是将传入的id值,D方法实例化(数据库名),查询出所需要的数据并且写入excel文件,里面可以设置所需写入excel的数据,以及excel内容之中的列标题;
down_load(将write_excel方法写入excel得到的文件从服务器下载到本地);调用是点击导出excel文件按钮之后就是调用down_load方法(记得传参数);
HTML:
<div class="row"> <form action="{:U('Excel/down_load')}" method="post"> <table id="sample-table-1" class="table table-striped table-bordered table-hover"> <thead> <tr> <th class="center"> <label> 序号 <!-- <input type="checkbox" class="ace" /> <span class="lbl"></span> --> </label> </th> <th>用户名称</th> <th>所属运营商</th> <th>申请时间</th> <th>预定开通时间</th> <th>手机号码</th> <th>卡片ICCID</th> <th>申请备注</th> <th>操作</th> </tr> </thead> <tbody> <foreach name="list" item="v"> <tr> <td class="center" width="80px"> <label> <input type="checkbox" class="ace" name="id[]" value="{$v.id}"/> <span class="lbl"></span> </label> </td> <th>{$v.name}</th> <th>{$v.brand_name}</th> <th>{$v.addtime|date="Y-m-d H:i:s",###}</th> <th>{$v.pretime|date="Y-m-d H:i:s",###}</th> <th>{$v.mobile}</th> <th>{$v.iccid}</th> <th>{$v.beizhu}</th> <td width="100px"> <div class="visible-md visible-lg hidden-sm hidden-xs action-buttons"> <a class="blue" href="{:U('Admin/Customer/customerupdate',array('id'=>$v['id']))}"> <i class="icon-edit bigger-130"></i> </a> <a class="red" onclick="if(!confirm('你确定要删除吗?')){return false;}else{return delete_msg();}" href="{:U('Admin/Customer/customerdel',array('id'=>$v['id']))}"> <i class="icon-trash bigger-130"></i> </a> <a class="blue"onclick="if(!confirm('你确定要发送给{$v.name}"您的电话卡已经审核通过,插卡即可使用"吗?')) {return false;}else{return sendsms({$v.mobile});}"href="javascript::" > <i class="icon-envelope bigger-130"></i> </a> </div> </td> </tr> </foreach> <tr> <td colspan="2"> <button class="btn btn-xs btn-danger"> <i class="icon-save bigger-110"></i> 导出excel </button> </td> <td colspan="7"> <div class="dataTables_paginate paging_bootstrap page"> {$page} </div> </td> </tr> </tbody> </table> </form> </div>
为什么点击button会将单单传递checkbox里面的id值呢?点击之后打印出的post数据如下:
array 'id' => array 0 => string '18' (length=2) 1 => string '19' (length=2)
表示,我也不知道,得问问雄哥、、、
总之,我们就是将这样的一组数据传递给那个excelcontroller.class.php里面的down_load方法,然后就是得到一个excel文件(当然有根据你传入的id查询出来的数据信息,excel文件名那些不会不知道怎么定义吧、、、还有在服务器之中的存储位置、、也许导出之后我应该将其删除、、)
PHP导出excel文件的更多相关文章
- ExtJS Grid导出excel文件
ExtJS Grid导出excel文件, 需下载POI:链接:http://pan.baidu.com/s/1i3lkPhF 密码:rqbg 1.将Grid表格数据连同表格列名传到后台 2.后台导出e ...
- PHP从数据库导出EXCEL文件
参考博客链接:http://www.cnblogs.com/huangcong/p/3687665.html 我的程序代码 原生导出Excel文件 <?phpheader('Content-ty ...
- jxl导出Excel文件
一.java项目实现读取Excel文件和导出Excel文件 实现读取和导出Excel文件的代码: package servlet; import java.io.FileInputStream; im ...
- 【转】 (C#)利用Aspose.Cells组件导入导出excel文件
Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...
- PHPExcel导出excel文件
今天园子刚开,先来个货顶下,后续园丁qing我会再慢慢种园子的,希望大家多来园子逛逛. PHPExcel导出excel文件,先说下重要的参数要记住的东西 impUser() 导入方法 exportEx ...
- 导出Excel文件
/// <summary> /// 类说明:Assistant /// 更新网站:[url=http://www.sufeinet.com/thread-655-1-1.html]http ...
- 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法
-----转载:http://blog.csdn.net/sgear/article/details/7663502 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格 ...
- MSSQL2005 导出excel文件
Title:MSSQL2005 导出excel文件 --2011-01-16 16:01 EXEC master..xp_cmdshell 'bcp "select * from 数据库名 ...
- asp.net 导出excel文件
之前做过winfrom程序的导出excel文件的功能,感觉非常简单.现在试着做asp.net中导出excel的功能,之前用的是Microsoft.Office.Interop.Excel这个对象来实现 ...
随机推荐
- Delphi的内存管理及内存泄露问题 FastMM4
这几天因为一个程序长时间运行出现比较严重的内存泄露问题,开始关注了一下内存管理方面的东西,以前也注意内存管理,创建了对象及时释放,但总有忘了处理的情况. 在Delphi中没有自动回收机制,所以一定要及 ...
- IOS中类似的。9.png图片
图形用户界面中的图形有两种实现方式,一种是用代码画出来,比如Quartz 2D技术,狠一点有OpenGL ES,另一种则是使用图片. 代码画的方式比较耗费程序员脑力,CPU或GPU; 图片则耗费磁盘空 ...
- hcatalog配置
https://cwiki.apache.org/confluence/display/Hive/HCatalog+CLI hive的配置中添加: export PATH=$PATH:$HIVE ...
- OpenStack学习
========================================== openstack的场景是什么 openstack的目的是把空闲的机器组织起来,经过虚拟化,租给用户使用. 出现的 ...
- python3 内置函数 filter()
filter(function or None, iterable) --> filter object Return an iterator yielding those items of i ...
- Shell | grep with n following lines
'foo' sample.txt ➜ dex-method-counts git:(master) ./dex-method-counts ~/Downloads/n.apk | 'hui' hui: ...
- linux服务器查看公网IP信息的方法
最近在解决网络问题时,需要查看本机的出口公网IP信息,所以在网络上搜索和请求运维达人,获得如下两个方法: curl ifconfig.me 在linux系统中输入上述的命令,可以查看到本机连接的公网信 ...
- 使用git管理github上的项目
使用git可以把我们的项目代码上传到github上面去,方便自己管理,如何使用git?觉得是每位程序猿所必需要有的谋生技能,所以在此记录一下自己学会使用的这个过程: 一.需要注册github账号,这样 ...
- Markdown 编辑器语法指南
基本技巧 代码 如果你只想高亮语句中的某个函数名或关键字,可以使用 `function_name()` 实现 通常编辑器根据代码片段适配合适的高亮方法,但你也可以用 ``` 包裹一段代码,并指定一种语 ...
- Flash图表控件FusionCharts如何定制图表中的趋势线和趋势区
FusionCharts中的趋势线是什么 趋势线是横跨图标的水平/垂直线条,用来表示一些预订数据值. 在图表中展示趋势线 用户可以使用<chart>元素中的trendlines属性来显示图 ...