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这个对象来实现 ...
随机推荐
- 在asp.net 中应用POST传递和接收XML文件以及参数.(转)
使用POST方式可以向别的页面发送请求,并获取返回结果. 可以从一个页面发送POST到另一个页面,也可以在winform工程中使用HTTPRequest发送POST到一个页面.我们拿ASP.NET的a ...
- [POJ 2443] Set Operation (bitset)
题目链接:http://poj.org/problem?id=2443 题目大意:给你N个集合,每个集合里有若干个数.M个查询,每个查询有a,b两个数.问是否存在一个集合同时包含a,b这两个数.若存在 ...
- [HDU 3689]Infinite monkey theorem (KMP+概率DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3689 黄老师说得对,题目只有做wa了才会有收获,才会有提高. 题意:一个猴子敲键盘,键盘上有n个键,猴 ...
- kylin一种OLAP的实现
1.基于hive.hadoop的预先计算. 2.cube存储在HBASE里面.利用HBase的列存储,实现MOLAP 3.在cube上做数据分析,kylin实现标准的SQL,实现查询HBase 所以说 ...
- Library Cache: Lock, Pin and Load Lock
What is "Library cache lock" ? This event controls the concurrency between clients of the ...
- css列表
列表是有三种形式: 1.无序列表,用来表示一个列表语义,并且每个项目与项目之间是不分先后顺序的 ul 的英文unordered list "无序列表" li 的英文 list ...
- maya user guider第一课,一些基本概念
1.maya主要用于建模,动画, 视觉特效,游戏, 和模拟 一般分为以下几类: l 建模: ploygons, nurbs, subdivision surfaces 这是不同的建模方法. po ...
- 关于 profile文件(转)
登录shell执行了两个特殊文件, 1个是:\etc\profile, 这个文件由系统管理员设置,通常做一些如检查是否有邮件,设置默认的创建文件的掩码,给某些表转到处变量赋值,已经任何管理员希望每当用 ...
- Android开发-API指南-AIDL
Android Interface Definition Language (AIDL) 英文原文:http://developer.android.com/guide/components/aidl ...
- 慕课网-安卓工程师初养成-4-1 Java条件语句之 if
来源:http://www.imooc.com/code/1353 生活中,我们经常需要先做判断,然后才决定是否要做某件事情.例如,如果考试成绩大于 90 分,则奖励一个 IPHONE 5S .对于这 ...