IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 使用EasyExcel实现Excel数据的导入导出 -> 正文阅读

[开发测试]使用EasyExcel实现Excel数据的导入导出

阿里巴巴EasyExcel官网:链接
导入步骤:

1.导入Excel依赖
2.编写对应的Excel实体类(使用EasyExcel提供的注解)
3.编写controller

依赖

 <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.0-beta2</version>
 </dependency>

实体类

在这里插入图片描述

假设我的excel表格长这样,对应实体类写法如下

  @ExcelProperty("药物名称")  核心注解就是这个,这个注解代表着Excel中的标题,
  有几个标题,这里就得写几个注解对应在属性上
package com.cz.pojo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * @Date 2022/3/6 17:51
 * @Description
 * @Param
 */
@TableName("medices")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Medicnes {
    @TableId(type = IdType.AUTO)
    Integer id;

    @ExcelProperty("药物名称")
    String  medice;

    @ExcelProperty("药物来源")
    String  remark;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    @TableField("ctime")
    Date creatTime;
}

controller实现文件导入功能

一行代码即可把Excel中的数据转换成List集合

EasyExcel.read(file.getInputStream()).head(Medicnes.class).sheet().
doReadSync();
@RequestMapping(value = "/importExcel",method = RequestMethod.POST)
public JSONObject importExcel(@RequestParam("file") MultipartFile file)  {
        try {
            List<Medicnes>  list = EasyExcel.read(file.getInputStream()).head(Medicnes.class).sheet().doReadSync();
            mediceService.insertBatch(list);
            return CommonResult.Sucess();
        } catch (IOException e) {
            log.info("文件导入异常{}",e);
            return  CommonResult.Failure();
        }
    }

导出功能

先上工具类ExcelUtils

package com.cz.untils;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.util.List;


/**
 * @Date 2022/3/19 17:13
 * @Description
 * @Param
 */
@Slf4j
public class ExcelUtils {
    /*
    文件名称 文件的内容的标题类   文件里面的数据
    * */
    public static  void Export(String fileName, Class excelHead, List<T> data, HttpServletResponse response){
        ServletOutputStream outputStream = setResponseDownLoad(fileName, response);
        ExcelWriterBuilder writeBook = EasyExcel.write(outputStream, excelHead);
        ExcelWriterSheetBuilder sheet = writeBook.sheet(fileName);
        //文件流会自动关闭
        sheet.doWrite(data);
    }
    public static ServletOutputStream setResponseDownLoad(String fileName, HttpServletResponse response){
        try {
            //解决乱码(IE浏览器除外)
            fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");// 只支持字母

            //设置响应的类型
            response.setContentType("application/vnd.ms-excel;charset=utf-8");
            //设置响应的编码格式
            response.setCharacterEncoding("utf8");
            //设置响应头
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
            response.setHeader("Pragma", "public");
            response.setHeader("Cache-Control", "no-store");
            response.addHeader("Cache-Control", "max-age=0");
            return response.getOutputStream();
        } catch (Exception e) {
            log.info("设置响应头异常{}",e);
        }
        return null;
    }
}

Controller

对应的参数说明在工具类当中,在浏览器访问即可下载文件,建议使用谷歌浏览器

 @RequestMapping(value = "/testDown",method = RequestMethod.GET)
 public  void testDown(HttpServletResponse response){
     ExcelUtils.Export("药物记录表",Medicnes.class,null,response);
 }

注意:

请使用浏览器进行下载测试,postman测试会有个小问题,名称显示乱码;
在这里插入图片描述

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-22 20:54:32  更:2022-03-22 20:54:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:15:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码