现在教教你如何导入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}&quot您的电话卡已经审核通过,插卡即可使用&quot吗?'))          {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文件的更多相关文章

  1. ExtJS Grid导出excel文件

    ExtJS Grid导出excel文件, 需下载POI:链接:http://pan.baidu.com/s/1i3lkPhF 密码:rqbg 1.将Grid表格数据连同表格列名传到后台 2.后台导出e ...

  2. PHP从数据库导出EXCEL文件

    参考博客链接:http://www.cnblogs.com/huangcong/p/3687665.html 我的程序代码 原生导出Excel文件 <?phpheader('Content-ty ...

  3. jxl导出Excel文件

    一.java项目实现读取Excel文件和导出Excel文件 实现读取和导出Excel文件的代码: package servlet; import java.io.FileInputStream; im ...

  4. 【转】 (C#)利用Aspose.Cells组件导入导出excel文件

    Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...

  5. PHPExcel导出excel文件

    今天园子刚开,先来个货顶下,后续园丁qing我会再慢慢种园子的,希望大家多来园子逛逛. PHPExcel导出excel文件,先说下重要的参数要记住的东西 impUser() 导入方法 exportEx ...

  6. 导出Excel文件

    /// <summary> /// 类说明:Assistant /// 更新网站:[url=http://www.sufeinet.com/thread-655-1-1.html]http ...

  7. 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法

    -----转载:http://blog.csdn.net/sgear/article/details/7663502 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格 ...

  8. MSSQL2005 导出excel文件

    Title:MSSQL2005 导出excel文件  --2011-01-16 16:01 EXEC master..xp_cmdshell 'bcp "select * from 数据库名 ...

  9. asp.net 导出excel文件

    之前做过winfrom程序的导出excel文件的功能,感觉非常简单.现在试着做asp.net中导出excel的功能,之前用的是Microsoft.Office.Interop.Excel这个对象来实现 ...

随机推荐

  1. 阻止Application_End事件的解决方案

    在做项目时,遇到同步ERP数据的问题,客户要求是:程序中,设置一个开始时间,再设置一个时间间隔,让程序每隔一段时间导出销售记录,这个开始时间和时间间隔可以手动修改设定.     这问题纠缠了我好几天, ...

  2. 单选按钮,通过js判断是否选中

    <input type="radio" value="0" style="vertical-align:middle" name=&q ...

  3. 利用sql批量删除表,存储过程

    利用sql批量删除表,存储过程. 最近用godaddy的空间,由于系统里面的表多,一个个的删除很麻烦,就网上搜集了一下解决方法. 给大家分享一下: 1.批量删除存储过程 declare @procNa ...

  4. 在探索中感悟,在摸索中前进--ET之快递法

    飞测说:最近很多朋友问如果没有需求文档,我该怎么测试?我自然想起了探索测试,今天来说说自己在探索测试路上的一点点感悟-------快递测试法,让我们在探索中感悟,在摸索中前进-- 快递测试法,是从ET ...

  5. 简单JS实现对表的行的增删

    这段代码非常的简单,仅仅作为自己的一个小小的记录! ok,先上一个简单的图例,效果如下(注意:这只是一个简单的例子,不过可以根据这个简单的例子,变化出更为复杂的效果)! 代码也非常的简单,如下所示(注 ...

  6. .net验证码生成及使用

    验证码的作用: 几年前,大部分网站.论坛之类的是没有验证码的,因为对于一般用户来说验证码只是增加了用户的操作,降低了用户的体验.但是后来各种灌水机器人.投票机器人.恶意注册机器人层出不穷,大大增加了网 ...

  7. iPad用户使用Mac和Windows应用软件-记Parallels Access使用体验

    iPad用户使用Mac和Windows应用软件-记ParallelsAccess使用体验 用ipad远程连接win系统已不是新鲜事情,我们可以使用TeamViewer和OnLiveDesktopPlu ...

  8. html5 搖一搖

    <script> // 首先在页面上要监听运动传感事件 function init(){ if (window.DeviceMotionEvent) { // 移动浏览器支持运动传感事件 ...

  9. Spring 注解实体类中非数据库字段属性

    解决办法:在属性的get方法上加上一段注解标识它是临时属性,不是数据库字段就OK @Transient public List<Reverts> getChildList() { retu ...

  10. idea 14 svn安装

    安装SVN客户端. 打开IDEA 14 File-setting-Version coltorl-Subversion-General 填入安装路径 打开"VCS"菜单项然后点击& ...