springboot项目整合easypoi实现导入导出功能

导入依赖

在导入依赖钱看是否项目中存在poi相关的版本。直接从pom文件中去除exclusion。

本次使用的是4.2.0 。maven依赖如下:

<dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.2.0</version></dependency><dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>6.1.6.Final</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.0</version></dependency><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.0.0</version><exclusions><exclusion><groupId>com.google.guava</groupId><artifactId>guava</artifactId></exclusion></exclusions></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency>

貌似没用到easypoi-base 。先不管了

按照官方说明。创建实体

官方文档;

public class MaterialExport implements Serializable {// 物资名称@Excel(name = "物资名称", width = 15)private String name;// 物资规格@Excel(name = "物资规格")private String specs;// 物资类型@Excel(name = "物资类型")private String type;// 单位@Excel(name = "单位")private String unit;// 库存@Excel(name = "库存")private long num;//单价@Excel(name = "单价")private BigDecimal unitprice;// 厂家@Excel(name = "厂家", width = 20)private String manufactor;// 库存位置@Excel(name = "库存位置", width = 20)private String address;// 用途@Excel(name = "用途", width = 20)private String purpose;@Excel(name = "入库时间",format = "yyyy年MM月dd日", width = 25)@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date createTime;// 备注@Excel(name = "备注", width = 40)private String remarks;//getter setter方法省略。}

在导入时需要注意:实体中用到的属性为java基本属性或者是在“java.lang”、“java.math”、“java.sql”、“java.util”包中具体easypoi中逻辑代码为:

/**     * 是不是java基础类     *     * @param field     * @return     */    public static boolean isJavaClass(Field field) {        Class<?> fieldType = field.getType();        boolean isBaseClass = false;        if (fieldType.isArray()) {            isBaseClass = false;        } else if (fieldType.isPrimitive() || fieldType.getPackage() == null                   || "java.lang".equals(fieldType.getPackage().getName())                   || "java.math".equals(fieldType.getPackage().getName())                   || "java.sql".equals(fieldType.getPackage().getName())                   || "java.util".equals(fieldType.getPackage().getName())) {            isBaseClass = true;        }        return isBaseClass;    }

导出功能

获取数据后直接调用Util方法
controller:

public Result export(HttpServletRequest request, HttpServletResponse response) {System.out.println(sdf.format(new Date()));//此处为从数据库获取list List<MaterialExport> materialExports = materialService.export();response.setContentType("application/vnd.ms-excel");OutputStream out = null;try {response.setHeader("Content-disposition","attachment;filename=" + URLEncoder.encode("物资导出" + sdf.format(new Date()) + ".xls","ISO-8859-1" ));Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("物资库存信息", "物资"),MaterialExport.class, materialExports);out = response.getOutputStream();workbook.write(out);} catch (Exception e) {System.out.println(e.getMessage());System.out.println(e);} finally {try {if (out != null)out.close();} catch (IOException e) {}}return Response.success();}

导入

从文件流中获取数据用easypoi解析数据:

public Result inport(HttpServletRequest request,@RequestParam("file") MultipartFile fileItem) {ImportParams importParams = new ImportParams();      importParams.setHeadRows(2);    // 获取模板    ExcelImportResult<MaterialExport> data = null;    try {        data = ExcelImportUtil.importExcelMore(fileItem.getInputStream(), MaterialExport.class, importParams);    } catch (Exception e) {    e.printStackTrace();    }    // 获取模板数据    List<MaterialExport> successList = data.getList();    int total = successList.size();    // 循环数据    System.out.println(total);    for (MaterialExport excelDTO : successList) {    System.out.println(excelDTO.toString());    }return Response.success();}

完毕。

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

(0)

相关推荐

  • Spring Data Elasticsearch的使用

    最近在项目开发过程中发现项目接口调用日志表存在一定的问题,为了记录项目中所有的接口调用数据专门用了一个表来存储请求接口的报文信息,一直以来也没出现什么问题,上次我在和外部系统对接时发现,该接口返回的数 ...

  • 数据库分库分表

    垂直分表 将字段拆分出多个表 水平分表 将数据拆分多个表 <!-- 分库分表插件 --><dependency> <groupId>org.apache.shard ...

  • java Word 转 PDF格式

    添加maven依赖 <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.doc< ...

  • Java Springboot 如何利用Redis完成Session操作(登录,注销等)

    前沿 在Java Web开发中,如果你要做动态网页或者记录用户的相关信息等等,必然会或多或少涉及到Session的操作. Session session是什么呢?简单地来说,相当于一个有时间限制的会话 ...

  • uniapp下载excel(在线预览效果),后端用springboot

    看了网上很多文章,很多都是只给了后端或者只给的前端打开文档微信那个openDocument的方法 而后端很多也只是给了返回流方法,这里看了很多总结下 首先后端要引入依赖 <dependency& ...

  • Chrome隐藏功能:一键批量导入导出密码

    Chrome 是我们很多小伙伴的主力浏览器,并且,很多时候还承担着密码管理器的任务,因为我们经常会把登录网站的账号密码保存在浏览器内,方便下次登录时自动填充. 因此,长期以来 Chrome 保存了我们 ...

  • 同花顺与通达信自选股的互相导入导出方法

    同花顺自选股导入通达信自选股的步骤:1.将自选股数据或板块数据从同花顺导出.(同花顺板块管理中点导出:自选股-板块管理-板块股-导出板块)2.用word(32位版)将导出的文件打开后复制,再用粘贴到记 ...

  • ASP.NET 开源导入导出库Magicodes.IE 导出Excel教程

    要点 导出特性 如何导出Excel表头 如何导出数据.如何进行数据的切割.如何使用筛选器 导出特性 ExporterAttribute Name: 名称(当前Sheet 名称) HeaderFontS ...

  • ASP.NET 开源导入导出库Magicodes.IE Docker中使用

    Magicodes.IE在Docker中使用 更新历史 2019.02.13 [Nuget]版本更新到2.0.2 [导入]修复单列导入的Bug,单元测试"OneColumnImporter_ ...

  • 项目整合管理中常用的2种思考方法

    作者:谷雨 编辑:环环 *以下正文* 整合管理又叫整体管理,顾名思义,就是从头到尾.自始至终. 也就是说整合管理会涉及所有的知识领域以及五个过程组.全程涉及资源分配.计划更新.变更控制.各阶段衔接过渡 ...

  • Whatsapp在德国禁用聊天记录导出功能

    德国用户再也无法在Whatsapp中导出个人聊天记录.功能被禁用的原因是与Blackberry的专利纠纷. 相关导读: 德国法庭禁止Whatsapp,Facebook和Instagram 2019年1 ...

  • SpringBoot项目的限流

    开发访问量比较大的系统是,爬虫的目的就是解决访问量大的问题:缓存穿透是为了保护后端数据库查询服务:计数服务解决了接近真实访问量以及数据库服务的压力. 架构图 限流 就拿十万博客来说,如果存在热点文章, ...

  • ASP.NET 开源导入导出库Magicodes.IE 完成Excel图片导入导出

    Magicodes.IE Excel图片导入导出 为了更好的根据实际功能来迭代,从2.2的里程碑规划开始,我们将结合社区的建议和意见来进行迭代,您可以点此链接来提交您的意见和建议: https://g ...

  • NPOI 在指定单元格导入导出图片

    Intro 我维护了一个 NPOI 的扩展(WeihanLi.Npoi),主要用来导入导出 Excel 数据,最近有网友提出了导入 Excel 的时候解析图片的需求,于是就有了本文的探索 导入Exce ...