基于注解玩转excel导出导入

简介: 基于注解玩转excel导出导入

基于注解玩转excel导出导入

话不多说 开始

        <!-- poi office -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.13</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.13</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>3.13</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
        </dependency>

请自行创建项目 我就不一一演示了 代码生成器即可

生成三层架构 完毕后

讲解 @ExcelField 注解

/**
 * Excel注解定义 自定义注解 注入到实体类顶部  用于指定实体类的导出
 * @author yangbuyi
 * @version 2021-1-8
 */
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelField {
  /**
   * 导出字段名(默认调用当前字段的“get”方法,如指定导出字段为对象,请填写“对象名.对象属性”,例:“area.name”、“office.name”)
   */
  String value() default "";
  /**
   * 导出字段标题(需要添加批注请用“**”分隔,标题**批注,仅对导出模板有效)
   */
  String title();
  /**
   * 字段类型(0:导出导入;1:仅导出;2:仅导入)
   */
  int type() default 0;
  /**
   * 导出字段对齐方式(0:自动;1:靠左;2:居中;3:靠右)
   */
  int align() default 0;
  /**
   * 导出字段字段排序(升序)
   */
  int sort() default 0;
  /**
   * 如果是字典类型,请设置字典的type值
   */
  String dictType() default "";
  /**
   * 反射类型
   */
  Class<?> fieldType() default Class.class;
  /**
   * 字段归属组(根据分组导出导入)
   */
  int[] groups() default {};
}

基本用法

title: 导出的单元格标题
aling: 对齐格式  0:自动;1:靠左;2:居中;3:靠右
sort[重要]: 导出的字段顺序 别重复哦 会覆盖 
@ExcelField(title = "管理员", align = 2, sort = 1)
private String name;

这里定义完毕之后 在controller 调用即可

创建controller 访问

package top.yangbuyi.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import top.yangbuyi.common.excel.ExportExcel;
import top.yangbuyi.domain.User;
import top.yangbuyi.service.UserService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.List;
/**
 * ClassName: excelController
 *
 * @author yangshuai
 * @Date: 2020-12-28 13:31
 * @Description: $
 **/
@RestController
public class excelController {
    @Resource
    private UserService userService;
    @Resource
    HttpServletResponse httpServletResponse;
    @Resource
    HttpServletRequest httpServletRequest;
  /**
    * @功能描述:导出
    * @Date: 2020-12-28 13:33
    */
   @GetMapping
    public String excel() {
        try {
            String fileName = "测试" + new Date() + ".xlsx";
            // 获取list集合数据
            List<User> list = this.userService.list();
            // 直接输出
            new ExportExcel("测试", User.class).setDataList(list).write(httpServletResponse, fileName, httpServletRequest).dispose();
        } catch (Exception e) {
            log.error("测试: {}", e);
        }
        return "";
    }
}

完结。。。。。

相关文章
|
8天前
|
easyexcel
【EasyExcel】第二篇:导出excel文件,导出多个sheet工作空间
【EasyExcel】第二篇:导出excel文件,导出多个sheet工作空间
|
8天前
|
JavaScript 前端开发
【导出Excel】Vue实现导出下载Excel文件(blob文件流)--亲测可用
【导出Excel】Vue实现导出下载Excel文件(blob文件流)--亲测可用
【导出Excel】Vue实现导出下载Excel文件(blob文件流)--亲测可用
|
3天前
|
前端开发 Java
基于Java爬取微博数据(二) 正文长文本+导出数据Excel
【5月更文挑战第12天】基于Java爬取微博数据,正文长文本+导出数据Excel
|
8天前
|
Java
java导出复杂excel
java导出复杂excel
|
4天前
|
JSON Rust 前端开发
【sheetjs】纯前端如何实现Excel导出下载和上传解析?
本文介绍了如何使用`sheetjs`的`xlsx`库在前端实现Excel的导出和上传。项目依赖包括Vite、React、SheetJS和Arco-Design。对于导出,从后端获取JSON数据,通过`json_to_sheet`、`book_new`和`writeFile`函数生成并下载Excel文件。对于上传,使用`read`函数将上传的Excel文件解析为JSON并发送至后端。完整代码示例可在GitHub仓库[fullee/sheetjs-demo](https://github.com/fullee/sheetjs-demo)中查看。
38 10
|
7天前
|
开发框架 资源调度 JavaScript
uniapp本地导出表格excel
uniapp本地导出表格excel
|
8天前
|
前端开发 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
38 0
|
8天前
|
JavaScript
vue导出excel无法打开问题
vue导出excel无法打开问题
|
8天前
|
easyexcel BI
excel合并列导出文件
excel合并列导出文件
|
8天前
|
前端开发
基于jeecgboot的flowable流程任务excel导出功能
基于jeecgboot的flowable流程任务excel导出功能
15 1