文档章节

tp实现excel的导入和导出

卫刚刚
 卫刚刚
发布于 2017/09/02 15:39
字数 1108
阅读 17
收藏 0
点赞 0
评论 0

一:下载phpExcel第三方类库

              下载地址:http://www.thinkphp.cn/topic/14005.html下载官方网站;

二:下载成功之后将文件放到Vendor下:ThinkPHP\Extend\Vendor\PHPExcel\PHPExcel.php。

三:配置数据库的信息操作(我的是在home文件夹下(application/home/config/config.php)添加如下配置):

<?php
return array(
    //'配置项'=>'配置值'
    'DB_TYPE'   => 'mysql', // 数据库类型
    'DB_HOST'   => 'localhost', // 服务器地址
    'DB_NAME'   => 'db_oa', // 数据库名
    'DB_USER'   => 'root', // 用户名
    'DB_PWD'    => 'root', // 密码
    'DB_PORT'   => 3306, // 端口
     'DB_PREFIX' => 'tg_', // 数据库表前缀
//    'DB_FIELDS_CACHE'       =>  false,        // 启用字段缓存(开发时这个要写成false)
)
?>       

四:模板代码:        

<html>
<head>

</head>
<body>
<P><a href="{:U('Index/expUser')}" >导出数据并生成excel</a></P><br/>
<form action="{:U('Index/impUser')}" method="post" enctype="multipart/form-data">
    <input type="file" name="import"/>
    <input type="hidden" name="table" value="tablename"/>
    <input type="submit" value="导入"/>
</form>
</body>
</html>
<?php

?>

实现功能的控制器方法:

  1>导出数据方法的实现:

function expUser(){//导出Excel
        //获取表头名:
        $xlsName  = "evaluate_check";
        //获取文件里面具体的数据
        $xlsCell  = array('教师检查作业表', '所属功能','所属权限','所属学生','学生答案'
        );
//        连接数据库找到查询的表
        $xlsModel = M('evaluate_check');
//        通过调用select方法field查找数据表里面的字段
        $xlsData  = $xlsModel->Field('id,tep_id,tet_id,student_id,student_anwser')->select();
        $this->exportExcel($xlsName,$xlsCell,$xlsData);
    }
    public function exportExcel($expTitle,$expCellName,$expTableData){
//        抓取文件名将字符编码转换成utf8格式
        $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
//       命名Excel文件的文件名称,通过时间函数随即打乱
        $fileName = $_SESSION['account'].date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定
        //通过count函数获取到字段的行数
        $cellNum = count($expCellName);
       //获取具体的值
        $dataNum = count($expTableData);
//        var_dump(count($expTableData));exit;
        //引入具体的类库
        vendor("PHPExcel.PHPExcel");
//        echo '111111dfgfhj';exit;
        //实例化方法,得到所有的方法;
        $objPHPExcel = new \PHPExcel();
        //设置单元格的行数
        $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');

//        var_dump($cellName);exit;
//        var_dump($objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1'));exit;
        $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格
//        echo '1111111';exit;
//        var_dump($objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1'));exit;
//         $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.'  Export time:'.date('Y-m-d H:i:s'));
        //对获取的行号进行循环遍历并且赋值
        for($i=0;$i<$cellNum;$i++){
           $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i]);
        }
        $objPHPExcel->getActiveSheet()->setTitle($expTitle);
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1',$expTitle);
        // Miscellaneous glyphs, UTF-8
//        var_dump($dataNum);exit;
        //对获取的列好进行遍历赋值输出
        for($i=0;$i<$dataNum;$i++){
            for($j=0;$j<$cellNum;$j++){
               $a  = array_values($expTableData[$i]) ;
                $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3),$a[$j]);
            }
        }
        ob_end_clean();//清楚缓冲避免乱码
        header('pragma:public');
        //设置表头信息
        header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
        header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印
        //通过调用如下方法来创建Excel将值写入
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        //进行保存下载
        $objWriter->save('php://output');
        exit;
    }

3>导入数据方法的实现:

      (1)选取你要导入的xls文件,进行操作 

      (2)代码如下: 

function impUser(){
         //判断你的文件是否为空
        if (!empty($_FILES)) {
//            引入类库
            vendor("PHPExcel.PHPExcel");
            //获取存储文件的文件名
            $file_name=$_FILES['import']['tmp_name'];
            //调用如下方法来读取你表里面的信息
            $objReader = \PHPExcel_IOFactory::createReader('Excel5');
//            var_dump($objReader);exit;
            //读取到的临时文件名的信息
            $objPHPExcel = $objReader->load($file_name,$encode='utf-8');
            //获取Excel表格的列数
            $sheet = $objPHPExcel->getSheet(0);
            $highestRow = $sheet->getHighestRow(); // 取得总行数

            $highestColumn = $sheet->getHighestColumn(); // 取得总列数
//            将值进行写入
            for($i=3;$i<=$highestRow;$i++)
            {
                $data['account']= $data['truename'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();
                $sex = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();
                // $data['res_id']    = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();
                $data['class'] = $objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue();
                $data['year'] = $objPHPExcel->getActiveSheet()->getCell("F".$i)->getValue();
                $data['city']= $objPHPExcel->getActiveSheet()->getCell("G".$i)->getValue();
                $data['company']= $objPHPExcel->getActiveSheet()->getCell("H".$i)->getValue();
                $data['zhicheng']= $objPHPExcel->getActiveSheet()->getCell("I".$i)->getValue();
                $data['zhiwu']= $objPHPExcel->getActiveSheet()->getCell("J".$i)->getValue();
                $data['jibie']= $objPHPExcel->getActiveSheet()->getCell("K".$i)->getValue();
                $data['honor']= $objPHPExcel->getActiveSheet()->getCell("L".$i)->getValue();
                $data['tel']= $objPHPExcel->getActiveSheet()->getCell("M".$i)->getValue();
                $data['qq']= $objPHPExcel->getActiveSheet()->getCell("N".$i)->getValue();
                $data['email']= $objPHPExcel->getActiveSheet()->getCell("O".$i)->getValue();
                $data['remark']= $objPHPExcel->getActiveSheet()->getCell("P".$i)->getValue();
                $data['sex']=$sex=='男'?1:0;
                $data['res_id'] =1;

                $data['last_login_time']=0;
                $data['create_time']=$data['last_login_ip']=$_SERVER['REMOTE_ADDR'];
                $data['login_count']=0;
                $data['join']=0;
                $data['avatar']='';
                $data['password']=md5('123456');
                //通过以下方法,将值添加到数据库中;
                M('Member')->add($data);

            }
            $this->success('导入成功!');
        }else
        {
            $this->error("请选择上传的文件");
        }

    }

说明:最后的数据库信息以你具体的表信息为主,在M(‘表明’)->add($data);

         $data里面的数据也以你真是的表为基础

© 著作权归作者所有

共有 人打赏支持
卫刚刚
粉丝 1
博文 28
码字总数 13490
作品 0
thinkphp3.2和phpexcel导出带生成图片完美案例

thinkphp3.2和phpexcel导出带生成图片完美案例 新手一枚,接触tp也有一个月了,最近公司要求报表导出要有图片生成,特意花时间研究了下,看事例代码 注意事项: 1.phpexcel下载地址:http://p...

IT阿飞 ⋅ 2017/08/25 ⋅ 0

Object-Excel映射的通用解决方案--FastEJ

FastEJ说明 简介 在互联网信息发展的时代,对报表数据的处理需要一个通用化的解决方案。而导入Excel文件到内存、导出内存数据到Excel文件 是一个普遍化的需求。本项目旨在设计一个Object-Ex...

悟达 ⋅ 2016/09/14 ⋅ 0

Excel 快捷导出导入工具--exportExcel

exportExcel 让 excel 导出导入更简单,告别繁琐的 excel 导出,实现自定义导出,模板导出,基于注解导出简单方便。 1、 新建excel导出。 Excel excel = new Excel(); //新建excelExcelSheet...

Jeff_Regan ⋅ 2017/08/15 ⋅ 5

Office 软件操作组件--common.office

java组件,实现Excel,word,pdf等常用office的 #目前只完善Excel的导入导出,方便简洁。具体步骤如下: 1,定义与Excel对应的bean类,加上配置。 @ExcelSheet(sheetIndex=0,titleIndex=1,da...

雅狼工作室 ⋅ 2017/10/20 ⋅ 2

php导入导出excel实例

这里实现的PHP导入导出excel功能用到的是开源PHPExcel,执行下面的操作之前请先下载该类库文件,官方网站:http://www.codeplex.com/PHPExcel,官网案例代码很多,导出pdf什么的都有,这里主...

card123 ⋅ 2015/09/24 ⋅ 0

完整的thinphp+phpexcel实现excel报表的输出(有图有效果)

准备工作: 1.下载phpexcel1.7.6类包; 2.解压至TP框架的ThinkPHPVendor目录下,改类包文件夹名为PHPExcel176,目录结构如下图; 编写代码(以一个订单汇总数据为例): 1. 创建数据库及表; 2...

mickelfeng ⋅ 2013/05/08 ⋅ 0

JeeSite|Excel导入导出

在各种管理系统中,数据的导入导出是经常用到的功能,通常导入导出以Excel、CSV格式居多。JeeSite提供了很好的Excel的导入导出功能,隐藏了底层的很多实现,通过简单的套路式步骤即可完成数据...

秋风似刀 ⋅ 2017/11/15 ⋅ 0

PHPExcel-1.8.1导入、导出Excel表格

仅留作记录使用: /** * 读取文件方案一 */ public function readExcel() { requireonce VENDORPATH . 'PhpExcel/PHPExcel/IOFactory.php'; // 循环遍历数据 $objReader = PHPExcel_IOFactor......

老K8 ⋅ 2017/06/09 ⋅ 0

循序渐进开发WinForm项目(5)--Excel数据的导入导出操作

随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习...

walb呀 ⋅ 2017/12/04 ⋅ 0

PHP导入Excel和导出数据为Excel文件

有时需要将Excel表格的数据导入到mysql数据库中,我们使用PHP的一个开源项目PHP-ExcelReader可以轻松实现Excel的导入。另外将mysql数据导出为Excel与本站上篇文章中导出CSV一样,只是将逗号分...

rin9958 ⋅ 2016/06/03 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java NIO之字符集

1 字符集和编解码的概念 首先,解释一下什么是字符集。顾名思义,就是字符的集合。它的初衷是把现实世界的符号映射为计算机可以理解的字节。比如我创造一个字符集,叫做sex字符集,就包含两个...

士别三日 ⋅ 34分钟前 ⋅ 0

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 39分钟前 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 42分钟前 ⋅ 0

Webpack 4 api 了解与使用

webpack 最近升级到了 v4.5+版 01 官方不再支持 node4 以下版本 官方不再支持 node4 以下版本官方不再支持 node4 以下的版本,所以如果你的node版本太低,先开始升级node吧!话说node10 ...

NDweb ⋅ 52分钟前 ⋅ 0

使用nodeJs安装Vue-cli

Vue脚手架就是一个Vue框架开发环境 脚手架的意思是帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装,让我们不需要为了编辑或者一些其...

木筏笔歆 ⋅ 今天 ⋅ 0

【微信小程序开发实战】0x00.开发前准备工作

写在开始 本人资深后端码农一枚,近期项目需求,接触到了微信小程序,将学习过程整理成文分享给小伙伴们,由于是边学边整理难免有表述不对的地方,望大家及时指正,感谢。 本人微信号: dream...

dreamans ⋅ 今天 ⋅ 0

linux redis的安装和php7下安装redis扩展

安装redis服务器 (1)下载安装包: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz (2)编译程序: $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make $ cd src &&......

concat ⋅ 今天 ⋅ 0

Guava EventBus源码解析

一、EventBus使用场景示例 Guava EventBus是事件发布/订阅框架,采用观察者模式,通过解耦发布者和订阅者简化事件(消息)的传递。这有点像简化版的MQ,除去了Broker,由EventBus托管了订阅&...

SaintTinyBoy ⋅ 今天 ⋅ 0

http怎么做自动跳转https

Apache 版本 如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容: RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME......

Helios51 ⋅ 今天 ⋅ 0

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部