*************************************优雅的分割线 **********************************

分享一波:程序员赚外快-必看的巅峰干货

如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程

请关注微信公众号:HB荷包

一个能让你学习技术和赚钱方法的公众号,持续更新
*************************************优雅的分割线 **********************************
SimpleExecutor
最近在搭公司新项目的架构,测试的过程中深感导出Excel极为不便,因此就产生了写一个通用导出工具类的想法。写完后经测试发现比较好用,因此将公司相关的代码移除,单独拿出来这个模块进行开源。

项目的GitHub地址:POI操作工具

如果您对本工具比较感兴趣,可以加入下面QQ群进行技术交流:781943947

使用方式:

创建数据库(这个操作就不贴代码了)

导入工程下db目录的数据库

创建类ApiLog(实际开发中换成自己的类),加上注解@Excel

@Data
public class ApiLog implements Serializable {private static final long serialVersionUID = -3286564461647015367L;/*** 日志id*/@Excel(name = "编号")private Integer logId;/*** 请求路径*/@Excel(name = "请求地址")private String logUrl;/*** 参数*/@Excel(name = "请求参数")private String logParams;/*** 访问状态,1正常0异常*/@Excel(name = "访问状态")private Integer logStatus;/*** 异常信息*/@Excel(name = "异常信息")private String logMessage;/*** 浏览器UA标识*/@Excel(name = "浏览器标识", autoSize = true)private String logUa;/*** 访问controller*/@Excel(name = "控制层")private String logController;/*** 请求方式,get、post等*/@Excel(name = "请求方式")private String logMethod;/*** 响应时间,单位毫秒*/@Excel(name = "响应时间", isStatistics = true)private Long logTime;/*** 请求ip*/@Excel(name = "请求ip")private String logIp;/*** 设备MAC*/@Excel(name = "设备号")private String logDevice;/*** 创建时间*/@Excel(name = "请求时间")private String createdDate;/*** 创建人*/private String createdBy;/*** 创建人姓名*/@Excel(name = "创建人", autoSize = true)private String createdName;/*** 返回值*/@Excel(name = "返回值")private String logResult;/*** 日志内容*/@Excel(name = "日志内容")private String logContent;/*** 日志类型  0:操作日志;1:登录日志;2:定时任务;*/private Integer logType;/*** 操作类型  1查询,2添加,3修改,4删除,5导入,6导出*/private Integer logOperateType;@Overridepublic String toString() {return "ApiLog{" +"logId=" + logId +", logUrl='" + logUrl + '\'' +", logParams='" + logParams + '\'' +", logStatus=" + logStatus +", logMessage='" + logMessage + '\'' +", logUa='" + logUa + '\'' +", logController='" + logController + '\'' +", logMethod='" + logMethod + '\'' +", logTime=" + logTime +", logIp='" + logIp + '\'' +", logDevice='" + logDevice + '\'' +", createdDate='" + createdDate + '\'' +", createdBy='" + createdBy + '\'' +", createdName='" + createdName + '\'' +", logResult='" + logResult + '\'' +", logContent='" + logContent + '\'' +", logType=" + logType +", logOperateType=" + logOperateType +'}';}
}

编写Mapper(Service就跳过了)

@Component
public interface ApiMapper {/*** 查询所有* @return*/List<ApiLog> findAll();}
<?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.gej.poi.mapper.ApiMapper"><!-- 注意:本内容仅限于风越云力内部传阅,禁止外泄以及用于其他的商业目 --><!-- 通用查询映射结果 --><resultMap id="BaseResultMap" type="com.gej.poi.pojo.ApiLog"><id column="log_id" property="logId"/><result column="log_url" property="logUrl"/><result column="log_params" property="logParams"/><result column="log_status" property="logStatus"/><result column="log_message" property="logMessage"/><result column="log_ua" property="logUa"/><result column="log_controller" property="logController"/><result column="log_method" property="logMethod"/><result column="log_time" property="logTime"/><result column="log_ip" property="logIp"/><result column="log_device" property="logDevice"/><result column="created_date" property="createdDate"/><result column="created_by" property="createdBy"/><result column="log_result" property="logResult"/><result column="created_name" property="createdName"/></resultMap><!-- 通用查询结果列 --><sql id="Base_Column_List">log_id, log_url, log_params, log_status, log_message, log_ua, log_controller, log_method, log_time, log_ip, log_device, created_date, created_name, log_result</sql><select id="findAll" resultMap="BaseResultMap">select * from sys_log_api</select></mapper>

编写测试类


@SpringBootTest
@RunWith(SpringRunner.class)
public class ExportTest {@Autowiredprivate ApiMapper apiMapper;/*** 导出测试* @throws Exception*/@Testpublic void testExportLog() throws Exception {List<ApiLog> list = apiMapper.findAll();Workbook workbook = new ExcelExportHandler().createSheet(new ExportParams("测试导出", "最新日志"), ApiLog.class, list);OutputStream outputStream = new FileOutputStream(new File("D:/测试.xlsx"));workbook.write(outputStream);}/*** 导入测试* @throws Exception*/@Testpublic void testImportLog() throws Exception {InputStream inputStream = new FileInputStream(new File("D:/测试.xlsx"));List<ApiLog> apiLogs = new ExcelImportHandler().importExcel(inputStream, ApiLog.class, new ImportParams());for (ApiLog apiLog : apiLogs) {System.out.println(apiLog);}}}

最后附上Excel注解的代码

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface Excel {/*** 该列是否需要时间格式化*/boolean needFormat() default false;/*** 时间格式化*/String format() default "";/*** 导出时在excel中每个列的高度 单位为字符,一个汉字=2个字符*/double height() default 10;/*** 导出时的列名。不可重复*/String name();/*** 导出时在excel中每个列的宽 单位为字符,一个汉字=2个字符 如 以列名列内容中较合适的长度 例如姓名列6 【姓名一般三个字】* 性别列4【男女占1,但是列标题两个汉字】 限制1-255*/double width() default 10;/*** 是否自动统计数据,如果是统计,true的话在最后追加一行统计,把所有数据求和*/boolean isStatistics() default false;/*** 是否设置列宽自适应*/boolean autoSize() default false;}

*************************************优雅的分割线 **********************************

分享一波:程序员赚外快-必看的巅峰干货

如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程

请关注微信公众号:HB荷包

一个能让你学习技术和赚钱方法的公众号,持续更新
*************************************优雅的分割线 **********************************
SimpleExecutor

注解版poi操作工具相关推荐

  1. Springboot整合Poi导出excel(注解版)

    简介 博客专栏: Springboot整合Poi导出excel(简单版) Springboot整合Poi导出excel(注解版) 上文提到通过poi简单导出Excel后,很多读者反应需要解决导出自适应 ...

  2. JAVA实现导出mysql表结构到Word详细注解版

    JAVA实现导出mysql表结构到Word详细注解版 转自https://blog.csdn.net/weixin_42041153/article/details/109739073 本文在原文中一 ...

  3. 整合初步---------SSH(注解版)

    上面的一篇博客已经介绍了 Spring和Hibernate之间的整合,没看过的童鞋可以去看看,这篇博客讲解Spring+Hibernate+Struts2注解版......... 个人觉得使用注解可能 ...

  4. Spring Boot 实战 —— MyBatis(注解版)使用方法

    原文链接: Spring Boot 实战 -- MyBatis(注解版)使用方法 简介 MyBatis 官网 是这么介绍它自己的: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过 ...

  5. SpringBoot集成Mybatis(0配置注解版)

    Mybatis初期使用比较麻烦,需要各种配置文件.实体类.dao层映射关联.还有一大推其它配置.当然Mybatis也发现了这种弊端,初期开发了generator可以根据表结构自动生成实体类.配置文件和 ...

  6. springMVC+Spring+mybatis整合配置版与注解版

    springMVC+Spring+mybatis整合 , 使用配置版来完成: -----------------------------前端 1.创建web系统,导入jar包: spring的jar包 ...

  7. SpringBoot_数据访问-整合MyBatis(二)-注解版MyBatis

    前面已经创建数据表和JAVABEAN,如何用mybatis来对数据进行增删改查,我们先说mybatis注解版的使用,我来写上一个mapper,操作我们这个数据库,我们放在mapper包下,我们操作de ...

  8. SSH整合注解版(Spring+Struts2+Hibernate)

    整体架构: pom.xml 引入maven节点: <dependencies><!--单测--><dependency><groupId>junit&l ...

  9. Mybatis多条件直接查询Param注解版

    1.UserMapper接口 package com.william.dao;import com.william.domain.QueryValueObject; import com.willia ...

最新文章

  1. 仿美团外卖的全栈项目(vue+node+mongodb)带支付-大三求实习
  2. python学习之第四课时--运算符
  3. 【转】工厂模式面向接口编程
  4. python的yield和yield from
  5. 程序员过关斩将--从每秒6000写请求谈起
  6. J2ME的移动支付系统的客户端的实现
  7. 从0到1告诉你搭建完整Python+requests接口自动化测试框架!
  8. Effective C++读书摘要--Implementations二
  9. Bailian2899 Bailian3242 矩阵交换行【矩阵】
  10. kvm虚拟化学习笔记(二)之linux kvm虚拟机安装
  11. ApplicationContext.xml配置文件
  12. OBCA认证培训课程-分布式事务 MVCC 事务隔离级别
  13. 组件中使用_Cocos Creator中Button组件使用详解
  14. ug如何复制面_了解了一下内容,让你UG快速入门
  15. phpMyAdmin安装配置教程
  16. 华为od统一考试B卷【按身高体重排队】C语言 实现
  17. 人大金仓助力广东省首届信创职业技能竞赛圆满完成
  18. 网络数据包转发过程详解
  19. 鸿蒙启智 博学多才,如何启智——【3岁阶段孩子的教养之63】
  20. k3595参数_场效应管 2SK3595-01MR,2SK3595,K3595

热门文章

  1. 俄亥俄州立大学计算机科学转学成功,俄亥俄州立大学转学成功率83.38%!!
  2. mysql dos 下切换连接_如何在dos下连接进入mysql对数据库进行操作
  3. python中与label类似的控件是_python中tkinter的使用(控件整理)(一)
  4. 大数据基础学习三:Ubuntu下安装VMware Tools超详细步骤及需要注意的问题(以ubuntu-18.04.3、Mware Workstation 15.1.0 Pro为例)
  5. MySQL 学习二:高手必备!MySQL 增删改查高级命令大全硬核总结!
  6. dbscan算法中 参数的意义_无监督机器学习中,最常见的聚类算法有哪些?
  7. android onitemclicklistener 参数,android – 对listview中的项使用setOnItemClickListener
  8. java资源文件获取属性_Java读写资源文件类Properties
  9. java 代码块的作用_4种Java代码块的作用讲解
  10. 关于php的问题有哪些,关于PHP的报错问题?