前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于注解玩转excel导出导入

基于注解玩转excel导出导入

作者头像
杨不易呀
发布2022-01-19 14:08:38
8890
发布2022-01-19 14:08:38
举报
文章被收录于专栏:杨不易呀

基于注解玩转excel导出导入

demo 请 加入 598347590 技术解决群获取

话不多说 开始

代码语言:javascript
复制
        <!-- 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 注解

代码语言:javascript
复制
/**
 * 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 {};
}
基本用法
代码语言:javascript
复制
title: 导出的单元格标题
aling: 对齐格式  0:自动;1:靠左;2:居中;3:靠右
sort[重要]: 导出的字段顺序 别重复哦 会覆盖 


@ExcelField(title = "管理员", align = 2, sort = 1)
private String name;
这里定义完毕之后 在controller 调用即可
创建controller 访问
代码语言:javascript
复制
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 "";
    }
}

完结。。。。。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基于注解玩转excel导出导入
    • 话不多说 开始
      • 请自行创建项目 我就不一一演示了 代码生成器即可
      • 生成三层架构 完毕后
      • 讲解 @ExcelField 注解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档