TP5.0 excel 导入导出

引第三方的phpexcel类库放到 ThinkPHP\Library\Vendor\demo下,自己建的文件夹demo

再将Excel.class放到ThinkPHP\Library\Org\class下,自己建的文件夹class

控制器:

<?php
namespace Admin\Controller;
use Think\Controller;
class ExcelController extends Controller {
    public function excelList(){
        $this->display();
    }
//    导入
    public function import(){
        if(!empty($_FILES[‘file_stu‘][‘name‘])){
            $tmp_file = $_FILES[‘file_stu‘][‘tmp_name‘];    //临时文件名
            $file_types = explode(‘.‘,$_FILES[‘file_stu‘][‘name‘]); //  拆分文件名
            $file_type = $file_types [count ( $file_types ) - 1];   //  文件类型
            /*判断是否为excel文件*/
            if($file_type == ‘xls‘ || $file_type == ‘xlsx‘|| $file_type == ‘csv‘){    //  符合类型
                /*上传业务*/
                $upload = new \Think\Upload();
                $upload->maxSize   =     3145728 ;
                $upload->exts      =     array(‘xls‘, ‘csv‘, ‘xlsx‘);
                $upload->rootPath  =      ‘./Public‘;
                $upload->savePath  =      ‘/Excel/‘;
                $upload->saveName  =      date(‘YmdHis‘);
                $info   =   $upload->upload();
                if(!$info) {    // 上传错误提示错误信息
                    $this->error($upload->getError());
                }else{  // 上传成功

                    //  读取文件
                    $filename=‘./Public‘.$info[‘file_stu‘][‘savepath‘].$info[‘file_stu‘][‘savename‘];
                    import("Org.Yufan.ExcelReader");
                    vendor(‘PHPExcel.PHPExcel‘);
                    $reader = \PHPExcel_IOFactory::createReader(‘Excel2007‘); //设置以Excel5格式(Excel97-2003工作簿)
                    $PHPExcel = $reader->load($filename); // 载入excel文件
                    $sheet = $PHPExcel->getSheet(0); // 读取第一個工作表
                    $highestRow = $sheet->getHighestRow(); // 取得总行数
                    var_dump($highestRow);
                    $highestColumm = $sheet->getHighestColumn(); // 取得总列数

                    /** 循环读取每个单元格的数据 */
                    $data = array();
                    for ($row = 2; $row <= $highestRow; $row++){//行数是以第1行开始

                        if($column = ‘A‘){
                            $data[‘name‘] = $sheet->getCell($column.$row)->getValue();
                        }
                        if($column = ‘B‘){
                            $data[‘account‘] = $sheet->getCell($column.$row)->getValue();
                        }
                        if($column = ‘C‘){
                            $data[‘password‘] = $sheet->getCell($column.$row)->getValue();
                        }
                        M(‘data‘)->add($data);
                    }
                        $this->success(‘导入数据库成功‘,U(‘Excel/show‘));
                }
            } else{ //  不符合类型业务
                $this->error(‘不是excel文件,请重新上传...‘);
            }
        }else{
            $this->error(‘(⊙o⊙)~没传数据就导入‘);
        }
    }
    //导出
    public function export(){
        import("ORG.Yufan.Excel");
        $list = M(‘data‘)->select();
        if($list == null){
            $this->error(‘数据库信息为空...‘,__APP__.‘/Admin/Excel/show‘);
        }else{
            $row=array();
            $row[0]=array(‘平台名称‘,‘帐号‘,‘密码‘);
            $i=1;
            foreach($list as $v){
                $row[$i][‘name‘] = $v[‘name‘];
                $row[$i][‘account‘] = $v[‘account‘];
                $row[$i][‘password‘] = $v[‘password‘];
                $i++;
            }
            $xls = new \Excel_XML(‘UTF-8‘, false, ‘datalist‘);
            $xls->addArray($row);
            $xls->generateXML(date(‘YmdHis‘));
        }
    }
    public function show(){
        $m = M(‘data‘);
        $data = $m->select();
        $this->assign(‘data‘,$data);
        $this->display();
    }
}

视图

excelList.html<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Excel导入导出</title>
</head>
<body>

<div class="page-header">
    <h1>TP DEMO
        <small>Excel导入导出练习</small>
    </h1>
</div>

<form method="post" action="{:U(‘Excel/import‘)}" class="form-signin" enctype="multipart/form-data" >
    <input name="file_stu" type="file" class="form-control">
    <button class="btn btn-lg btn-primary btn-block">导入</button>
</form>
</body>
</html>

视图

show.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表格展示</title>
</head>
<body>
<div class="page-header">
    <h1>TP DEMO
        <small>Excel导入导出练习</small>
    </h1>
</div>

<table class="table">
    <tr>
        <td><h4><b>平台名称</b></h4></td>
        <td><h4><b>帐号</b></h4></td>
        <td><h4><b>密码</b></h4></td>
    </tr>
    <foreach name="data" item="vo">
        <tr>
            <td>{$vo.name}</td>
            <td>{$vo.account}</td>
            <td>{$vo.password}</td>
        </tr>
    </foreach>
</table>

<form action="{:U(‘Excel/export‘)}" class="form-signin">
    <button class="btn btn-lg btn-primary btn-block">导出数据库数据</button>
</form>

</body>
</html>
时间: 2024-10-31 17:15:34

TP5.0 excel 导入导出的相关文章

利用反射实现通用的excel导入导出

如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 1 package com.bean; 2 3 public class Book { 4 private int id; 5 private String name; 6 private String type; 7 // public int a; 8 9 public String getType() { 10 System.ou

excel导入导出优化

对于上一篇excel中出现的问题,在excel导入导出中都做了优化.还是eclipse+jdk1.8,但是这个项目是一个web项目,需要配合Tomcat服务器,并且使用了SSH框架, I/O操作过多 首先,对于I/O操作过多,那么就不像之前一样,一条一条的添加或者更新;而且凑齐一堆,也就是一个list集合,然后统一的批量保存. 使用SessionFactory获取当前的session,然后调用session的persist方法,保存实体.只是设置了一个批量的量值.每到30条数据,就将缓存同步到数

POI实现excel导入导出

1.分析excel import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.Ce

[Utils]POI实现excel导入导出

1.分析excel 2.poi工具类 import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.s

Java - Excel 导入 导出,报无效数据

用Java,做了套后台账号管理系统,内有Excel导入导出模块 后台管理员登录后,可以通过<input type="file">,读取指定格式的Excel工作薄 系统会解析读取到的Excel,获取工作薄中,各工作表的数据 当然,如果 上传文件,不是Excel文件,则会显示上传失败 或是 是Excel文件,但其内工作表的数据不符合要求,则会将不符合要求的数据行,自动过滤掉 问题来了: 记得以前测试的时候,是没问题的,但今天,把导出文件,再次导入时,就一直报无效数据 (别提当时

一个基于POI的通用excel导入导出工具类的简单实现及使用方法

前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴.经过思考,认为一百个客户在录入excel的时候,就会有一百个格式版本,所以在实现这个功能之前,所以要统一excel的格式.于是提供了一个通用excel模版的下载功能.当所有客户用模版录入好数据再上传到系统,后端对excel进行解析,然后再持久化到数据库. 概述: 此工具类的几大特点 1.基本导入导出

Excel导入导出帮助类

/// <summary>    /// Excel导入导出帮助类    /// 记得引入 NPOI    /// 下载地址   http://npoi.codeplex.com/releases/    /// </summary> public class ExcelHelper    {        #region 导出Excel /// <summary>        /// 导出Excel  注:model 字段必须加[DisplayName("

java poi excel 导入导出数据

背景:1.pringmvc 框架下 的excel 导入导出   2.OI 操作office. 页面代码: <div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true"> <div class=&quo

开发指南专题十五:JEECG微云快速开发平台EXCEL导入导出

 开发指南专题十五:JEECG微云快速开发平台EXCEL导入导出 14.EXCEL导入导出 Excel的导入导出抽取通用功能,简化大家对POI的操作,对实体对象进行简单的注解配置就可以完成导入导出,模板的使用更是可以让打造漂亮的Excle报表,从而使大家从重复的工作中解脱出来,更加关注与业务的处理. 14.1注解介绍    注解名 作用对象 描述 是否必须 Excel 字段 对Excel字段的cell属性设置 是 ExcelCollection 字段 对集合对象进行标记表示一对多导出 否 E