EasyExcel的使用

 在项目开发中经常要实现excel的导入导出功能,本文简单讲解一下使用easyexcel实现导入导出功能,代码有不严谨的地方还请自行调整。

一、在pom.xml中主要添加如下依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>1.1.2-beta5</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.2</version>
</dependency>

二、废话不多说,直接贴代码:

1.项目结构如下:

2.pom.xml文件


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.exceldemo</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>exceldemo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.18</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.1</version>
        </dependency>
        <!--mybatis-->

        <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!--easyexcel-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>1.1.2-beta5</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.2</version>
        </dependency>
        <!--End easyexcel-->
        <!--thymeleaf  新的模板引擎,比jsp要出色-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <!--jdbc-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
            </plugin>
        </plugins>
    </build>

</project>

3. ExporExcelController


package com.exceldemo.demo.controller;

import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.exceldemo.demo.pojo.Catagory;
import com.exceldemo.demo.service.DemoService;
import com.exceldemo.demo.uitl.ExcelListener;
import com.exceldemo.demo.uitl.ExcelUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author :qds
 * @date :Created in 2019/10/29 21:34
 * @description:excel导入导出
 * @modified By:
 * @version: 1.0$
 */
@RequestMapping("/exce")
@Controller
public class ExporExcelController {
    //植入Service
    @Resource(name = "idemoService")
    private DemoService demoService;

    /*
     *直接输出数据到前台
     */
    @RequestMapping("/export")
    public String ExporExcel(HttpServletResponse response) throws Exception { //throws IOException {
        ExcelWriter writer = null;
        OutputStream outputStream = response.getOutputStream();
        try {
            //添加响应头信息
            response.setHeader("Content-disposition", "attachment; filename=" + "catagory.xls");
            response.setContentType("application/msexcel;charset=UTF-8");//设置类型
            response.setHeader("Pragma", "No-cache");//设置头
            response.setHeader("Cache-Control", "no-cache");//设置头
            response.setDateHeader("Expires", 0);//设置日期头

            //实例化 ExcelWriter
            writer = new ExcelWriter(outputStream, ExcelTypeEnum.XLS, true);

            //实例化表单
            Sheet sheet = new Sheet(1, 0, Catagory.class);
            sheet.setSheetName("测试");
            //获取数据
            List<Catagory> catagoryList = demoService.findAllToExcel();
            //System.out.println(catagoryList.size());
            //输出
            writer.write(catagoryList, sheet);
            writer.finish();
            outputStream.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                response.getOutputStream().close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    /*
     *
     */
    @RequestMapping("/import")
    @ResponseBody
    public void importExcel(@RequestParam("file") MultipartFile file) throws IOException {
       
            InputStream inputStream = file.getInputStream();
            //实例化实现了AnalysisEventListener接口的类
            ExcelListener listener = new ExcelListener();
            //传入参数
            ExcelReader excelReader = new ExcelReader(inputStream, ExcelTypeEnum.XLS, null, listener);
            //读取信息
            excelReader.read(new Sheet(1, 1, Catagory.class));
            //获取数据
            List<Object> list = listener.getDatas();
            List<Catagory> catagoryList = new ArrayList<Catagory>();
            Catagory catagory = new Catagory();

            //转换数据类型,并插入到数据库
            for (int i = 0; i < list.size(); i++) {
                catagory = (Catagory) list.get(i);
                  System.out.println(catagory);
                demoService.addForExcel(catagory);
            }
        

    }
/*
*在服务器上生成excel
 */
    @RequestMapping("/exportserver")
    @ResponseBody
    public String writeBySimple() {
        /*
        System.out.println(System.getProperty("user.dir"));
        String path =System.getProperty("user.dir")+"\\Index"; //所创建文件目录
        */
        String path = System.getProperty("user.dir")+"\\target\\classes\\static";
        String filePath = "tmpexcel";
        File f = new File(path+"\\"+filePath);
        if(!f.exists()) {
            f.mkdirs(); //创建目录
        }


        String fileName = "测试.xlsx";
        List<List<Object>> data = new ArrayList<>();
        data.add(Arrays.asList("111", "222", "333"));
        data.add(Arrays.asList("111", "222", "333"));
        data.add(Arrays.asList("111", "222", "333"));
        List<String> head = Arrays.asList("表头1", "表头2", "表头3");
        ExcelUtil.writeBySimple(path+"\\"+filePath+"\\"+fileName, data, head);
        return filePath+"\\"+fileName;
        //return null;
    }
}

4. DemoDAO


package com.exceldemo.demo.mapper;

import com.exceldemo.demo.pojo.Catagory;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Component;
import java.util.List;

@Component("DemoEmDAO")
public interface DemoDAO {
    //excel查询所有
    @Select("select id,name,sex,age from em")
    public List<Catagory> findAllToExcel() throws Exception;
    //添加
    public int addForExcel(Catagory model);
}

5. Category

package com.exceldemo.demo.pojo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.metadata.BaseRowModel;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;

/**
 * @author :qds
 * @date :Created in 2019/10/29 22:05
 * @description:
 * @modified By:
 * @version: 1.0$
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class Catagory extends BaseRowModel {
    @ExcelProperty(value = "id", index = 0)
    private Integer id;

    @ExcelProperty(value = "姓名", index = 1)
    private String name;

    @ExcelProperty(value = "性别", index = 2)
    private String sex;

    @ExcelProperty(value = "年龄", index = 3)
    private Integer age;

}

6. DemoService

package com.exceldemo.demo.service;

import com.exceldemo.demo.pojo.Catagory;

import java.util.List;

public interface DemoService {

    //excel查询所有
    public List<Catagory> findAllToExcel() throws Exception;
    //添加
    public int addForExcel(Catagory model);
}

7. DemoServiceImpl


package com.exceldemo.demo.service.impl;

import com.exceldemo.demo.mapper.DemoDAO;
//import com.exceldemo.demo.mapper.EmMapper;
import com.exceldemo.demo.pojo.Catagory;
import com.exceldemo.demo.service.DemoService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author :qds
 * @date :Created in 2019/11/6 23:08
 * @description:
 * @modified By:
 * @version: $
 */
@Service("idemoService")
public class DemoServiceImpl implements DemoService {
    @Resource(name = "DemoEmDAO")
    private DemoDAO dao;
    @Override
    public List<Catagory> findAllToExcel() throws Exception {
       return dao.findAllToExcel();
    }

    @Override
    public int addForExcel(Catagory model) {
        dao.addForExcel(model);
        return 0;
    }
}

8. ExcelListener

package com.exceldemo.demo.uitl;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;

import java.util.ArrayList;
import java.util.List;

/**
 * @author :qds
 * @date :Created in 2019/10/29 22:01
 * @description:excel操作
 * @modified By:
 * @version: 1.0$
 */
public class ExcelListener extends AnalysisEventListener {
    //可以通过实例获取该值
    private List<Object> datas = new ArrayList<Object>();

    public void invoke(Object o, AnalysisContext analysisContext) {
        datas.add(o);//数据存储到list,供批量处理,或后续自己业务逻辑处理。
        doSomething(o);//根据自己业务做处理
    }

    private void doSomething(Object object) {
        //1、入库调用接口
    }

    public List<Object> getDatas() {
        return datas;
    }
    public void setDatas(List<Object> datas) {
        this.datas = datas;
    }

    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        // datas.clear();//解析结束销毁不用的资源
    }
}

9. ExcelUtil


package com.exceldemo.demo.uitl;

import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.BaseRowModel;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.util.CollectionUtils;
import com.alibaba.excel.util.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @author :qds
 * @date :Created in 2019/10/30 21:08
 * @description:操作excel
 * @modified By:
 * @version: 1.0$
 */
@Slf4j
public class ExcelUtil {
  //  private static Logger logger = LoggerFactory.getLogger(ExcelUtil.class);
    private static Sheet initSheet;

    static {
        initSheet = new Sheet(1, 0);
        initSheet.setSheetName("sheet");
        //设置自适应宽度
        initSheet.setAutoWidth(Boolean.TRUE);
    }

    /**
     * 读取少于1000行数据
     * @param filePath 文件绝对路径
     * @return
     */
    public static List<Object> readLessThan1000Row(String filePath){
        return readLessThan1000RowBySheet(filePath,null);
    }

    /**
     * 读小于1000行数据, 带样式
     * filePath 文件绝对路径
     * initSheet :
     *      sheetNo: sheet页码,默认为1
     *      headLineMun: 从第几行开始读取数据,默认为0, 表示从第一行开始读取
     *      clazz: 返回数据List<Object> 中Object的类名
     */
    public static List<Object> readLessThan1000RowBySheet(String filePath, Sheet sheet){
        if(!StringUtils.hasText(filePath)){
            return null;
        }
        Logger log = LoggerFactory.getLogger(ExcelUtil.class);
        sheet = sheet != null ? sheet : initSheet;

        InputStream fileStream = null;
        try {
            fileStream = new FileInputStream(filePath);
            return EasyExcelFactory.read(fileStream, sheet);
        } catch (FileNotFoundException e) {
            log.info("找不到文件或文件路径错误, 文件:{}", filePath);
        }finally {
            try {
                if(fileStream != null){
                    fileStream.close();
                }
            } catch (IOException e) {
                log.info("excel文件读取失败, 失败原因:{}", e);

            }
        }
        return null;
    }

    /**
     * 读大于1000行数据
     * @param filePath 文件觉得路径
     * @return
     */
    public static List<Object> readMoreThan1000Row(String filePath){
        return readMoreThan1000RowBySheet(filePath,null);
    }

    /**
     * 读大于1000行数据, 带样式
     * @param filePath 文件觉得路径
     * @return
     */
    public static List<Object> readMoreThan1000RowBySheet(String filePath, Sheet sheet){
        if(!StringUtils.hasText(filePath)){
            return null;
        }
        Logger log = LoggerFactory.getLogger(ExcelUtil.class);
        sheet = sheet != null ? sheet : initSheet;

        InputStream fileStream = null;
        try {
            fileStream = new FileInputStream(filePath);
            ExcelListener excelListener = new ExcelListener();
            EasyExcelFactory.readBySax(fileStream, sheet, excelListener);
            return excelListener.getDatas();
        } catch (FileNotFoundException e) {
            log.error("找不到文件或文件路径错误, 文件:{}", filePath);
        }finally {
            try {
                if(fileStream != null){
                    fileStream.close();
                }
            } catch (IOException e) {
                log.error("excel文件读取失败, 失败原因:{}", e);
            }
        }
        return null;
    }

    /**
     * 生成excle
     * @param filePath  绝对路径, 如:/home/chenmingjian/Downloads/aaa.xlsx
     * @param data 数据源
     * @param head 表头
     */
    public static void writeBySimple(String filePath, List<List<Object>> data, List<String> head){
        writeSimpleBySheet(filePath,data,head,null);
    }

    /**
     * 生成excle
     * @param filePath 绝对路径, 如:/home/chenmingjian/Downloads/aaa.xlsx
     * @param data 数据源
     * @param sheet excle页面样式
     * @param head 表头
     */
    public static void writeSimpleBySheet(String filePath, List<List<Object>> data, List<String> head, Sheet sheet){
        sheet = (sheet != null) ? sheet : initSheet;

        if(head != null){
            List<List<String>> list = new ArrayList<>();
            head.forEach(h -> list.add(Collections.singletonList(h)));
            sheet.setHead(list);
        }

        OutputStream outputStream = null;
        ExcelWriter writer = null;
        try {
            outputStream = new FileOutputStream(filePath);
            writer = EasyExcelFactory.getWriter(outputStream);
            writer.write1(data,sheet);
        } catch (FileNotFoundException e) {
           // log.error("找不到文件或文件路径错误, 文件:{}", filePath);
            System.out.println("找不到文件或文件路径错误, 文件:{}"+ filePath);
        }finally {
            try {
                if(writer != null){
                    writer.finish();
                }

                if(outputStream != null){
                    outputStream.close();
                }

            } catch (IOException e) {
              //  log.error("excel文件导出失败, 失败原因:{}", e);
                System.out.println("excel文件导出失败, 失败原因:{}");
            }
        }

    }

    /**
     * 生成excle
     * @param filePath 绝对路径, 如:/home/chenmingjian/Downloads/aaa.xlsx
     * @param data 数据源
     */
    public static void writeWithTemplate(String filePath, List<? extends BaseRowModel> data){
        writeWithTemplateAndSheet(filePath,data,null);
    }

    /**
     * 生成excle
     * @param filePath 绝对路径, 如:/home/chenmingjian/Downloads/aaa.xlsx
     * @param data 数据源
     * @param sheet excle页面样式
     */
    public static void writeWithTemplateAndSheet(String filePath, List<? extends BaseRowModel> data, Sheet sheet){
        if(CollectionUtils.isEmpty(data)){
            return;
        }

        sheet = (sheet != null) ? sheet : initSheet;
        sheet.setClazz(data.get(0).getClass());

        OutputStream outputStream = null;
        ExcelWriter writer = null;
        try {
            outputStream = new FileOutputStream(filePath);
            writer = EasyExcelFactory.getWriter(outputStream);
            writer.write(data,sheet);
        } catch (FileNotFoundException e) {
          //  log.error("找不到文件或文件路径错误, 文件:{}", filePath);
            System.out.println("找不到文件或文件路径错误, 文件:{}"+ filePath);
        }finally {
            try {
                if(writer != null){
                    writer.finish();
                }

                if(outputStream != null){
                    outputStream.close();
                }
            } catch (IOException e) {
              //  log.error("excel文件导出失败, 失败原因:{}", e);
                System.out.println("excel文件导出失败, 失败原因:{}");
            }
        }

    }

    /**
     * 生成多Sheet的excle
     * @param filePath 绝对路径, 如:/home/chenmingjian/Downloads/aaa.xlsx
     * @param multipleSheelPropetys
     */
    public static void writeWithMultipleSheel(String filePath,List<MultipleSheelPropety> multipleSheelPropetys){
        if(CollectionUtils.isEmpty(multipleSheelPropetys)){
            return;
        }

        OutputStream outputStream = null;
        ExcelWriter writer = null;
        try {
            outputStream = new FileOutputStream(filePath);
            writer = EasyExcelFactory.getWriter(outputStream);
            for (MultipleSheelPropety multipleSheelPropety : multipleSheelPropetys) {
                Sheet sheet = multipleSheelPropety.getSheet() != null ? multipleSheelPropety.getSheet() : initSheet;
                if(!CollectionUtils.isEmpty(multipleSheelPropety.getData())){
                    sheet.setClazz(multipleSheelPropety.getData().get(0).getClass());
                }
                writer.write(multipleSheelPropety.getData(), sheet);
            }

        } catch (FileNotFoundException e) {
           // log.error("找不到文件或文件路径错误, 文件:{}", filePath);
            System.out.println("找不到文件或文件路径错误, 文件:{}"+ filePath);
        }finally {
            try {
                if(writer != null){
                    writer.finish();
                }

                if(outputStream != null){
                    outputStream.close();
                }
            } catch (IOException e) {
               // log.error("excel文件导出失败, 失败原因:{}", e);
                System.out.println("excel文件导出失败, 失败原因:{}");
            }
        }

    }

}

10. JsonDateSerializer


package com.exceldemo.demo.uitl;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class JsonDateSerializer extends JsonSerializer<Date> {
    private SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    @Override
    public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
            throws IOException, JsonProcessingException {
        String value = dateFormat.format(date);
        gen.writeString(value);
    }
}

11. MultipleSheelPropety


package com.exceldemo.demo.uitl;

import com.alibaba.excel.metadata.BaseRowModel;
import com.alibaba.excel.metadata.Sheet;
import lombok.Data;

import java.util.List;

/**
 * @author :qds
 * @date :Created in 2019/10/30 22:27
 * @description:excel用
 * @modified By:
 * @version: 1.0$
 */
@Data
public  class MultipleSheelPropety {

    private List<? extends BaseRowModel> data;
  //可以通过实例获取该值
   // private List<Object> data = new ArrayList<Object>();
    private Sheet sheet;

    public List<? extends BaseRowModel> getData() {
        return data;
    }
    public void setDatas(List<? extends BaseRowModel> data) {
        this.data = data;
    }

    public Sheet getSheet() {
        return sheet;
    }

    public void setSheet(Sheet sheet) {
        this.sheet = sheet;
    }
}

12. DemoMapper.xml


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.exceldemo.demo.mapper.DemoDAO" >
    <resultMap id="BaseResultMap" type="com.exceldemo.demo.entity.Em" >
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="sex" property="sex" jdbcType="TIMESTAMP" />
        <result column="age" property="age" jdbcType="INTEGER" />
        <result column="createDate" property="createDate" jdbcType="TIMESTAMP" />
    </resultMap>
    <!--01.查询所有记录-->
    <select id="findAll" resultType="com.exceldemo.demo.entity.Em">
         select * from em
     </select>
    <!--excel导入-->
    <insert id="addForExcel">
        insert into em(name,sex,age,createDate) values(#{name},#{sex},#{age},now())
    </insert>
</mapper>

13.html文件

<!DOCTYPE html>
<html lang="zh-CN" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="utf-8" />
    <title>excel导入导出</title>
    <script type="text/javascript" th:src="@{/js/jquery-3.4.1.min.js}"></script>

</head>
<body>
<!--表单提交-->
<form action="/exce/import" method="post" enctype="multipart/form-data">
    <input type="file" name="file" id="file"/>
    <input type="submit" value="表单提交">

</form>
<!--通过js提交-->
<input type="file" name="file" id="file2"/>
<input name="btnSubmit" type="button" value="JS导入" onclick="fnImpotExcel()"/>
<br>
<input name="btnSubmit" type="button" value="导出excel1(直接输出excel数据)" onclick="window.open('/exce/export')"/>
<input name="btnSubmit" type="button" value="导出excel2(服务器上生成excel文件,返回文件地址)" onclick="fnExportExcel('/exce/exportserver')"/>
</body>
</html>
<script>
    function fnImpotExcel(){
        var blob = document.getElementById('file2').files[0];

        var xhr = new XMLHttpRequest();

        xhr.onreadystatechange = function() {
            if(xhr.readyState == 4) {
                if(xhr.responseText) {
                    alert(xhr.responseText);
                    // if(slices == 0) {
                    //  alert(2)
                    // }
                }

            }
        };

//构造form数据
        var fd = new FormData();
        fd.append("file", blob);
        fd.append("name", blob.name);
        xhr.open("POST", "/exce/import", false);

        //设置二进制文边界件头
        //xhr.setRequestHeader("X_Requested_With", location.href.split("/")[3].replace(/[^a-z]+/g, '$'));
        xhr.send(fd);
        /*
            $.ajax({
                url: "/exce/import",
                type: "post",
                data: {field:document.getElementById('file2').files[0]},
                success: function (data) {alert(data);
                    console.log(data);
                  //  data = decodeURIComponent(decodeURIComponent (data)).split(",");
                   // $.each(a,function (k,v) {
                     //   $("[data-id="+a[k]+"]").append(decodeURIComponent(decodeURIComponent (data[k])));
                   // })
                }
            })

         */
    }
    //导出excel
    function fnExportExcel(url){
        $.ajax({
            url: url,
            type: "post",
            success: function (data) {
                if(data!="") window.open("/"+data);
            }
        })
    }
</script>

谷歌浏览器中显示:

14.SQL文件:

DROP TABLE IF EXISTS `em`;
CREATE TABLE `em` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `sex` varchar(10) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `createDate` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of em
-- ----------------------------
INSERT INTO `em` VALUES ('3', '张西', '女', '63', '2019-11-07 23:02:28');
INSERT INTO `em` VALUES ('4', '兰六', '男', '7', '2019-11-07 23:02:28');
INSERT INTO `em` VALUES ('5', '兰六11', '男', '11', '2019-11-07 23:05:28');

好了,效果自行测试吧。

扫二维码关注枯客集合页,也可访问:http://www.kkjhy.com

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值