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这个对象来实现 ...
随机推荐
- 阻止Application_End事件的解决方案
在做项目时,遇到同步ERP数据的问题,客户要求是:程序中,设置一个开始时间,再设置一个时间间隔,让程序每隔一段时间导出销售记录,这个开始时间和时间间隔可以手动修改设定. 这问题纠缠了我好几天, ...
- 单选按钮,通过js判断是否选中
<input type="radio" value="0" style="vertical-align:middle" name=&q ...
- 利用sql批量删除表,存储过程
利用sql批量删除表,存储过程. 最近用godaddy的空间,由于系统里面的表多,一个个的删除很麻烦,就网上搜集了一下解决方法. 给大家分享一下: 1.批量删除存储过程 declare @procNa ...
- 在探索中感悟,在摸索中前进--ET之快递法
飞测说:最近很多朋友问如果没有需求文档,我该怎么测试?我自然想起了探索测试,今天来说说自己在探索测试路上的一点点感悟-------快递测试法,让我们在探索中感悟,在摸索中前进-- 快递测试法,是从ET ...
- 简单JS实现对表的行的增删
这段代码非常的简单,仅仅作为自己的一个小小的记录! ok,先上一个简单的图例,效果如下(注意:这只是一个简单的例子,不过可以根据这个简单的例子,变化出更为复杂的效果)! 代码也非常的简单,如下所示(注 ...
- .net验证码生成及使用
验证码的作用: 几年前,大部分网站.论坛之类的是没有验证码的,因为对于一般用户来说验证码只是增加了用户的操作,降低了用户的体验.但是后来各种灌水机器人.投票机器人.恶意注册机器人层出不穷,大大增加了网 ...
- iPad用户使用Mac和Windows应用软件-记Parallels Access使用体验
iPad用户使用Mac和Windows应用软件-记ParallelsAccess使用体验 用ipad远程连接win系统已不是新鲜事情,我们可以使用TeamViewer和OnLiveDesktopPlu ...
- html5 搖一搖
<script> // 首先在页面上要监听运动传感事件 function init(){ if (window.DeviceMotionEvent) { // 移动浏览器支持运动传感事件 ...
- Spring 注解实体类中非数据库字段属性
解决办法:在属性的get方法上加上一段注解标识它是临时属性,不是数据库字段就OK @Transient public List<Reverts> getChildList() { retu ...
- idea 14 svn安装
安装SVN客户端. 打开IDEA 14 File-setting-Version coltorl-Subversion-General 填入安装路径 打开"VCS"菜单项然后点击& ...