zoukankan      html  css  js  c++  java
  • 「starter推荐」简单高效Excel 导出工具

    EasyExcel

    EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。
    64M内存1分钟内读取75M(46W行25列)的Excel,当然还有急速模式能更快,但是内存占用会在100M多一点

    spring boot stater依赖

    • 方便在 web 环境下使用 easyexcel ,已上传至 maven 仓库
    <dependency>
        <groupId>com.pig4cloud.excel</groupId>
        <artifactId>excel-spring-boot-starter</artifactId>
        <version>0.0.2</version>
    </dependency>
    

    使用方法

    只需要在 Controller 层返回 List 并增加 @ResponseExcel注解即可

    @Documented
    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface ResponseExcel {
    	String name() default "";
    	ExcelTypeEnum suffix() default ExcelTypeEnum.XLSX;
    	String password() default "";
    	String[] sheet() default {};
    	boolean inMemory() default false;
    	String template() default "";
    	String[] include() default {};
    	String[] exclude() default {};
    	Class<? extends WriteHandler>[] writeHandler() default {};
    	Class<? extends Converter>[] converter() default {};
    }
    

    基础用法

    • 返回单 sheet, 全部字段导出
    @ResponseExcel(name = "lengleng", sheet = "demoList")
    @GetMapping("/e1")
    public List<DemoData> e1() {
        List<DemoData> dataList = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
            DemoData data = new DemoData();
            data.setUsername("tr1" + i);
            data.setPassword("tr2" + i);
            dataList.add(data);
        }
        return dataList;
    }
    // 实体对象
    
    @Data
    public class DemoData {
    	private String username;
    	private String password;
    }
    
    

    • 自定义字段属性
    @Data
    public class DemoData {
        @ColumnWidth(50)  // 定义宽度
    	@ExcelProperty("用户名") // 定义列名称
        @ContentStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 40)
    	private String username;
    	@ExcelProperty("密码")
    	private String password;
    }
    

    • 忽略部分字段
    @Data
    public class DemoData {
        @ColumnWidth(50)  // 定义宽度
    	@ExcelProperty("用户名") // 定义列名称
        @ContentStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 40)
    	private String username;
    	@ExcelProperty("密码")
    	private String password;
    }
    

    导出多sheet

    @ResponseExcel(name = "lengleng", sheet = {"第一个sheet","第二个sheet"})
    @GetMapping("/e1")
    public List<List<DemoData>> e1() {
        List<List<DemoData>> lists = new ArrayList<>();
        lists.add(list());
        lists.add(list());
        return lists;
    }
    

    设置导出加密码

    	@ResponseExcel(name = "lengleng", sheet = "sheetName",password = "lengleng")
    	@GetMapping("/e1")
    	public List<List<DemoData>> e1() {
    		List<List<DemoData>> lists = new ArrayList<>();
    		lists.add(list());
    		lists.add(list());
    		return lists;
    	}
    
    

    高级用法模板导出

    @ResponseExcel(name = "模板测试excel", sheet = "sheetName",template = "example.xlsx")
    @GetMapping("/e1")
    public List<DemoData> e1() {
        return list();
    }
    

    其他用法

    项目推荐: Spring Cloud 、Spring Security OAuth2的RBAC权限管理系统 欢迎关注

  • 相关阅读:
    陶瓷电容的结构、工艺、失效模式
    Vue.js最佳实践
    Vue 超快速学习
    CSS 小技巧
    HTML5 Canvas
    webkit下面的CSS设置滚动条
    Some untracked working tree files would be overwritten by checkout. Please move or remove them before you can checkout. View them
    JSCS: Please specify path to 'JSCS' package
    React中ref的使用方法
    React 60S倒计时
  • 原文地址:https://www.cnblogs.com/leng-leng/p/13064888.html
Copyright © 2011-2022 走看看