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这个对象来实现 ...
随机推荐
- centos 6.5 安装 buildbot-slave 0.8.9
公司服务器多数都用的centos,这个是大环境,改不了,只好研究怎么安装buildbot-slave. buildbot-master倒是没有问题,可控,自己弄了一个ubuntu14来玩. cento ...
- Linux(Ubuntu)下MySQL的安装与配置
转自:http://www.2cto.com/database/201401/273423.html 在Linux下MySQL的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕.今 ...
- cocos2dx 菜单按钮回调方法传参 tag传参
.h文件 void menuCallBack(CCObject* pSender); .cpp CCMenuItemSprite* item = CCMenuItemSprite::create( m ...
- WPS去掉键入时自动进行句首字母大写更正
1.单击左上角的菜单选项 2.选择上图中的“选项”按钮
- Spark核心概念
1.Application 基于spark的用户程序,包含了一个Driver Program以及集群上中多个executor: spark中只要有一个sparkcontext就是一个a ...
- Robotlegs2 学习笔记 -- SwiftSuspenders 2.x (1)
Swiftsuspenders2 是一个基于元数据(metadata)的IOC(控制反转,inversion of control)的AS3的解决方案.反转控制又被称依赖注射(Dependency I ...
- Laxcus大数据管理系统2.0(9)- 第七章 分布任务组件
第七章 分布任务组件 Laxcus 2.0版本的分布任务组件,是在1.x版本的基础上,重新整合中间件和分布计算技术,按照新增加的功能,设计的一套新的.分布状态下运行的数据计算组件和数据构建组件,以及依 ...
- Hadoop的奇技淫巧
(2-6为性能优化)(7-9为函数介绍) 1.在JobHistory里面可以看到job相关的一些信息,用start-all启动Hadoop时便可以进入端口号8088查看查看信息,但是无法进入端口号19 ...
- ICE学习——异步1
ICE的AMI和AMD: AMI:指的是客户端的调用.一般有一个代理类,一个回调类. 从服务端返回的数据在回调类中的ice_response函数中. AMD:指的是服务端对客户端的调用分派.一般进行业 ...
- java学习之(接口)
使用接口 接口不能用于创建实例,但接口可以用于声明引用类型变量.当使用接口来声明引用类型变量时,这个引用类型变量必须引用到其实现类的对象.除此之外,接口的主要用途就是被实现类实现.归纳起来,接口主要有 ...