• [简单] 基于注解玩转excel导出导入


    基于注解玩转excel导出导入

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

    个人博客 https://yangbuyi.top

    image-20210108213341573

    话不多说 开始

    
    
            <!-- 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>
    

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

    image-20210108211911625

    image-20210108211845614

    生成三层架构 完毕后

    讲解 @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 "";
        }
    }
    

    image-20210108212823080

    image-20210108213006165

    完结。。。。。

  • 相关阅读:
    我爱淘冲刺阶段站立会议每天任务2
    我爱淘冲刺阶段站立会议每天任务1
    大道至简-灵活的软件工程
    大道至简-实现,才是目的
    冲刺第二阶段工作总结06
    课堂练习-最低价购书方案
    构建之法阅读笔记04
    冲刺第二阶段工作总结05
    冲刺第二阶段工作总结04
    冲刺第二阶段工作总结03
  • 原文地址:https://www.cnblogs.com/Yangbuyi/p/14253453.html
Copyright © 2020-2023  润新知