精华内容
下载资源
问答
  • easyexcel导出excel
    千次阅读
    2022-04-02 17:41:10

    传统Excel操作或者解析都是利用Apach POI进行操作,但是使用过这个框架的人都知道,这个框架并不完美,有较多的缺陷:
    1、使用步骤繁琐
    2、动态写出Excel操作非常麻烦
    3、对于新手来说,很难在短时间内上手
    4、读写时需要占用较大的内容,当数据量大时容器发生OOM

    EasyExcel实现excel导出:

            try {
                //设置头居中
                WriteCellStyle headWriteCellStyle = new WriteCellStyle();
                headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
                //设置内容居中
                WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
                contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
    
                HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
    
                response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
                response.setCharacterEncoding("utf-8");
                String fileName = URLEncoder.encode("员工表信息", "UTF-8");
                response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
                EasyExcel.write(response.getOutputStream(), BasicSysUserExcelData.class)
                        .autoCloseStream(Boolean.FALSE)
                        .registerWriteHandler(horizontalCellStyleStrategy)
                        .sheet("员工表信息")
                        .doWrite(exportList);
            } catch (Exception e) {
                response.reset();
                response.setContentType("application/json");
                response.setCharacterEncoding("utf-8");
                System.out.println("导出失败");
            }
    

    导出对象:

    @Data
    @HeadRowHeight(20)
    @ContentRowHeight(15)
    @ColumnWidth(20)
    @ContentFontStyle(fontHeightInPoints = (short) 12)
    public class BasicSysUserExcelData {
        @ExcelProperty(value = "部门名称")
        private String deptName;
    
        @ExcelProperty(value = "部门编码")
        private Integer deptId;
    
        @ExcelProperty(value = "员工姓名")
        private String actualName;
    
        @ExcelProperty(value = "手机号")
        private String phone;
    
        @ExcelProperty(value = "邮箱")
        private String mail;
    
        @ExcelProperty(value = "创建时间")
        private String createTime;
    
    
    }
    

    更多参考:https://alibaba-easyexcel.github.io/

    更多相关内容
  • springboot集成easyexcel做的导入导出demo,下载即可运行。
  • EasyExcel导出Excel文件

    2022-07-14 18:06:35
    EasyExcel是阿里巴巴出品的Excel文件处理工具,功能十分强大,能省去我们很多的编码,下面来通过一个例子,看看如何使用EasyExcel导出Excel文件的我们从数据库读取User实体对象数据,然后使用EasyExcel写入到...

    介绍

    EasyExcel是阿里巴巴出品的Excel文件处理工具,功能十分强大,能省去我们很多的编码,下面来通过一个例子,看看如何使用EasyExcel导出Excel文件的

    准备

    我们从数据库读取User实体对象数据,然后使用EasyExcel写入到HttpServletResponse输出流中,在浏览器就可以下载导出的Excel文件了

    POM

    主要有EasyExcel依赖

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.7.1</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>excel</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>excel</name>
        <description>excel</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.2.2</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <!--excel-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>easyexcel</artifactId>
                <version>2.2.3</version>
            </dependency>
    
            <!--json-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.69</version>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <excludes>
                            <exclude>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                            </exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    

    User实体

    @ExcelProperty(value = “id”) 表示导出的Excel文件列名为id,其他同理

    package com.example.excel.entity;
    
    import com.alibaba.excel.annotation.ExcelProperty;
    import com.alibaba.excel.annotation.format.DateTimeFormat;
    import lombok.Data;
    
    import java.math.BigDecimal;
    import java.util.Date;
    
    @Data
    public class User {
    
        @ExcelProperty("id")
        private String id;
    
        @ExcelProperty("username")
        private String username;
    
        @ExcelProperty("password")
        private String password;
    
        @ExcelProperty("address")
        private String address;
    
        @ExcelProperty("email")
        private String email;
    
        @ExcelProperty("profile")
        private String profile;
    
        @ExcelProperty("birthday")
        @DateTimeFormat("yyyy-MM-dd")
        private Date birthday;
    
        @ExcelProperty("registerDay")
        @DateTimeFormat("yyyy-MM-dd")
        private Date registerDay;
    
        @ExcelProperty("loginDay")
        @DateTimeFormat("yyyy-MM-dd")
        private Date loginDay;
    
        @ExcelProperty("status")
        private Integer status;
    
        @ExcelProperty("account")
        private BigDecimal account;
    
        @ExcelProperty("balance")
        private BigDecimal balance;
    
        @ExcelProperty("age")
        private Integer age;
    
        @ExcelProperty("sex")
        private Integer sex;
    
        @ExcelProperty("avatar")
        private String avatar;
    
        @ExcelProperty("level")
        private Integer level;
    
    }
    
    

    ExcelUtil

    实现浏览器导出下载Excel文件,写入本地文件也类似,可参考:EasyExcel使用

    package com.example.excel.util;
    
    import com.alibaba.excel.EasyExcel;
    
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.net.URLEncoder;
    import java.util.List;
    
    /**
     * @description: ExcelUtil
     * @author: zj
     * @date: 2022-07-14 17:07
     */
    public class ExcelUtil {
    
        public static void exportExcel(List<?> objects, Class clazz, String fileName,
                                       String sheetName, HttpServletResponse response) throws IOException {
    
            // 设置响应头
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("utf-8");
    
            // 设置防止中文名乱码
            String exportName = URLEncoder.encode(fileName, "utf-8");
            String sheetSubName = URLEncoder.encode(sheetName, "utf-8");
    
            // 文件下载方式(附件下载还是在当前浏览器打开)
            response.setHeader("Content-disposition", "attachment;filename=" +
                    exportName + ".xlsx");
    
            // 向Excel中写入数据
            EasyExcel.write(response.getOutputStream(), clazz)
                    .sheet(sheetSubName)
                    .doWrite(objects);
    
        }
    
    }
    

    Controller

    实现从MySQL读取数据,写入HttpServletResponse流中的主要逻辑

    package com.example.excel.controller;
    
    import com.example.excel.entity.User;
    import com.example.excel.mapper.UserMapper;
    import com.example.excel.util.ExcelUtil;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.List;
    
    /**
     * @description: Excel
     * @author: zj
     * @date: 2022-07-14 17:02
     */
    @RestController
    @Slf4j
    public class ExcelController {
    
        @Resource
        private UserMapper userMapper;
    
    
        @GetMapping("/excel")
        public void excel(HttpServletResponse response) throws IOException {
    
            long st = System.currentTimeMillis();
    
            List<User> users = userMapper.selectSub(0, 10000);
    
            ExcelUtil.exportExcel(users, User.class, "user_info", "sheet_one", response);
    
            log.info("export excel success, cost {} s.", (System.currentTimeMillis() - st) / 1000);
    
        }
    
    }
    

    效果

    浏览器输入接口地址下载Excel文件

    浏览器输入localhost/excel

    在这里插入图片描述

    在这里插入图片描述

    导出文件

    在这里插入图片描述

    APIFox

    注意:返回的是文件流

    在这里插入图片描述

    展开全文
  • Easyexcel导出excel表格

    2022-07-14 16:05:26
    1.导入 EasyExcel Maven包 2.配置表格表头样式,以及内容的写入方式 3.输出Excel到前端

    1.导入 EasyExcel Maven包

    <!--easyexcel 导出excel依赖-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>2.2.7</version>
    </dependency>

    2.配置表格表头样式,以及内容的写入方式

    import com.alibaba.excel.write.handler.SheetWriteHandler;
    import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
    import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
    import org.apache.poi.ss.usermodel.*;
    
    import java.util.List;
    
    
    public class EasyExcelWriteHandler implements SheetWriteHandler {
    
        /**
         * 表头数据
         */
        private final List<String> headsDatas;
    
        /**
         * 内容数据
         */
        private final List<List<String>> bodyDatas;
    
        /**
         * 表头样式
         */
        private CellStyle cellStyle;
    
        /**
         * 内容样式
         */
        private CellStyle cellStyleHeader;
    
    
        public EasyExcelWriteHandler(List<String> headsDatas, List<List<String>> bodyDatas) {
            this.headsDatas = headsDatas;
            this.bodyDatas = bodyDatas;
        }
    
    
        @Override
        public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
    
        }
    
        @Override
        public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
            Workbook workbook = writeWorkbookHolder.getWorkbook();
            Sheet sheet = workbook.getSheetAt(0);
    
            // 表头样式
            if (cellStyleHeader == null) {
                cellStyleHeader = workbook.createCellStyle();
                cellStyleHeader.setAlignment(HorizontalAlignment.CENTER);
                cellStyleHeader.setVerticalAlignment(VerticalAlignment.CENTER);
                cellStyleHeader.setFillForegroundColor(IndexedColors.WHITE.getIndex());
                Font font = workbook.createFont();
                // 字体大小
                font.setFontHeightInPoints((short) 16);
                // 字体
                font.setFontName("微软雅黑");
                //加粗
                font.setBold(true);
                cellStyleHeader.setFont(font);
            }
    
            // 内容样式
            if (cellStyle == null) {
                cellStyle = workbook.createCellStyle();
                cellStyle.setAlignment(HorizontalAlignment.CENTER);
                cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
                cellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
                Font font = workbook.createFont();
                font.setFontName("微软雅黑");
                font.setFontHeightInPoints((short) 12);
                cellStyle.setFont(font);
            }
    
            //表头内容
            Row row = sheet.getRow(0);
            if (row == null) {
                row = sheet.createRow(0);
            }
            //遍历写入表头
            for (int rowInt = 0; rowInt < headsDatas.size(); rowInt++) {
                //获取列内容
                String cellValue = headsDatas.get(rowInt);
                //根据表头内容设置表头列宽(自适应表头宽度)
                sheet.setColumnWidth(rowInt, cellValue.length() * 875);
                Cell cell = row.getCell(rowInt);
                if (cell == null) {
                    cell = row.createCell(rowInt);
                }
                cell.setCellStyle(cellStyleHeader);
                cell.setCellValue(cellValue);
    
                //遍历写入内容
                if (rowInt < bodyDatas.size()) {
                    for (int bodyRowInt = 0; bodyRowInt < bodyDatas.get(rowInt).size(); bodyRowInt++) {
                        Row row0 = sheet.getRow(bodyRowInt + 1);
                        if (row0 == null) {
                            row0 = sheet.createRow(bodyRowInt + 1);
                        }
                        Cell cell0 = row0.getCell(rowInt);
                        if (cell0 == null) {
                            cell0 = row0.createCell(rowInt);
                        }
                        cell0.setCellStyle(cellStyle);
                        cell0.setCellValue(bodyDatas.get(rowInt).get(bodyRowInt));
                    }
                }
            }
        }
    }

    3.输出Excel到前端

      public static void easyUtil1(ExcelBody excelBody) throws IOException {
           //转换内容数据
           List<List<String>> list2 = new ArrayList<>();
            for (List<Object> objects : excelBody.getBodyDatas()) {
                List<String> strs = new ArrayList<>();
                for (Object object : objects) {
                    strs.add(String.valueOf(object));
                }
                list2.add(strs);
            }
            //设置表名
            String simpleDateFormat = new String((new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())).getBytes(), "UTF-8");
            //设置字符编码
            response.setCharacterEncoding("utf-8");
            //设置内容类型
            response.setContentType("application/vnd.ms-excel");
            //设置标题
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(excelBody.getFileName() + simpleDateFormat + ".xlsx", "utf-8"));
            //核心代码
            //方式一:
           //EasyExcel.write(response.getOutputStream()).head(list2).sheet("sheet1").doWrite(list2);
            //方式二:
            ExcelWriterBuilder writerBuilder = EasyExcel.write(response.getOutputStream());
            writerBuilder.registerWriteHandler(new EasyExcelWriteHandler(excelBody.getHeads(), list2));
            ExcelWriter excelWriter = writerBuilder.build();
            ExcelWriterSheetBuilder writerSheetBuilder = EasyExcel.writerSheet("Sheet1");
            excelWriter.write(new ArrayList<>(), writerSheetBuilder.build());
            excelWriter.finish();
        }
    @Data
    public class ExcelBody {
    
        /**
         * 文件名
         */
        private String fileName;
    
        /**
         * 表头
         */
        private List<String> heads;
    
        /**
         * 数据体
         */
        private List<List<Object>> bodyDatas;
    }

    展开全文
  • 在java处理excel方便从简单的实现功能到自己封装工具类,一路走了好多,阿里的easyExcel对POI的封装更加精简这里介绍一下简单使用。

    功能背景

    简单的说下这个功能的背景需求吧,有类似需求的可以复用,果然导入还没写完,导出的功能接踵而来,一块写了吧

    • 实现excel导出(依旧废话…)
    • 多个sheet页一起导出
    • 第一个sheet页数据表头信息有两行
    • 样式稍微美观,列宽可以自定义等
    • 数据量稍微有些大(多个sheet页总量50w左右)

    项目引入依赖

    gradle:

    compile "com.alibaba:easyexcel:3.1.0"
    

    maven:

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>3.1.0</version>
    </dependency>
    

    注意: 3+版本的的easyexcel,使用poi 5+版本时,需要手动排除:poi-ooxml-schemas,例如:

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>3.1.0</version>
        <exclusions>
            <exclusion>
                <artifactId>poi-ooxml-schemas</artifactId>
                <groupId>org.apache.poi</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    

    项目编码

    如多个表格样式相同,可编写一个父类,将样式定义在父类上,子类继承父类即可。

    • 定义经销商信息对象,代码如下:
    package org.cango.dealer.manage.model.excel;
    
    import com.alibaba.excel.annotation.ExcelProperty;
    import com.alibaba.excel.annotation.write.style.ColumnWidth;
    import com.alibaba.excel.annotation.write.style.ContentFontStyle;
    import com.alibaba.excel.annotation.write.style.HeadFontStyle;
    import com.alibaba.excel.annotation.write.style.HeadStyle;
    import com.alibaba.excel.enums.poi.FillPatternTypeEnum;
    import lombok.AllArgsConstructor;
    import lombok.Builder;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    import java.util.Date;
    
    /**
     * @author xiaoxiaofeng
     * @date 2022/6/6
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 40)
    @HeadFontStyle(fontHeightInPoints = 12)
    @ContentFontStyle(fontHeightInPoints = 11)
    @ColumnWidth(20)
    public class ExcelCompany {
    
        // -------------------- 基本信息 start -------------
    
        @ExcelProperty({"基本信息", "公司名称"})
        private String companyName;
    
        @ExcelProperty({"基本信息", "省份"})
        private String province;
    
        @ExcelProperty({"基本信息", "成立时间"})
        private Date startDate;
    
        @ExcelProperty({"基本信息", "企业状态"})
        private String entStatus;
    
        @ColumnWidth(30)
        @ExcelProperty({"基本信息", "博客地址"})
        private String csdnAddress;
    
        // ---------------- 基本信息 end ---------------------
    
        // ---------------- 经营信息 start ---------------------
    
        @ExcelProperty({"经营信息", "员工数"})
        private String employeeMaxCount;
    
        @ExcelProperty({"经营信息", "网站地址"})
        private String netAddress;
    
        @ExcelProperty({"经营信息", "所属区域省"})
        private String businessProvinceName;
    
        @ExcelProperty({"经营信息", "所属区域市"})
        private String businessCityName;
    
        @ExcelProperty({"经营信息", "所属区域区县"})
        private String businessAreaName;
    
        // ---------------- 经营信息 end ---------------------
    }
    
    
    • 定义联系人信息对象,代码如下:
    package org.cango.dealer.manage.model.excel;
    
    import com.alibaba.excel.annotation.ExcelProperty;
    import com.alibaba.excel.annotation.write.style.ColumnWidth;
    import com.alibaba.excel.annotation.write.style.ContentFontStyle;
    import com.alibaba.excel.annotation.write.style.HeadFontStyle;
    import com.alibaba.excel.annotation.write.style.HeadStyle;
    import com.alibaba.excel.enums.poi.FillPatternTypeEnum;
    import lombok.AllArgsConstructor;
    import lombok.Builder;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    /**
     * @author xiaoxiaofeng
     * @date 2022/6/6
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 40)
    @HeadFontStyle(fontHeightInPoints = 12)
    @ContentFontStyle(fontHeightInPoints = 11)
    @ColumnWidth(20)
    public class ExcelContact {
        @ExcelProperty("公司名称")
        private String companyName;
    
        @ExcelProperty("姓名")
        private String name;
    
        @ExcelProperty("身份证号码")
        private String idCard;
    
        @ExcelProperty("电话号码")
        private String mobile;
    
        @ExcelProperty("职位")
        private String contactPostName;
    }
    
    • 编写controller进行测试,代码如下:
    package org.cango.dealer.manage.controller;
    
    import com.alibaba.excel.EasyExcelFactory;
    import com.alibaba.excel.ExcelWriter;
    import com.alibaba.excel.write.metadata.WriteSheet;
    import lombok.extern.slf4j.Slf4j;
    import org.cango.dealer.manage.model.excel.ExcelCompany;
    import org.cango.dealer.manage.model.excel.ExcelContact;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.servlet.http.HttpServletResponse;
    import java.io.OutputStream;
    import java.net.URLEncoder;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    /**
     * @author zhangfuzeng
     * @date 2022/6/9
     */
    @Slf4j
    @RestController
    public class ExportExcelController {
    
        @GetMapping("/exportExcel")
        public void exportExcel(HttpServletResponse response) {
            try (OutputStream out = response.getOutputStream()) {
                response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
                response.setCharacterEncoding("utf-8");
                String fileName = URLEncoder.encode("笑小枫测试导出", "UTF-8").replaceAll("\\+", "%20");
                response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
                handleExcel(out);
                out.flush();
            } catch (Exception e) {
                log.error(e.getMessage());
            }
        }
    
        private void handleExcel(OutputStream out) {
            try (ExcelWriter excelWriter = EasyExcelFactory.write(out).build()) {
                WriteSheet dealerSheet = EasyExcelFactory.writerSheet(0, "经销商信息").head(ExcelCompany.class).build();
                WriteSheet contactSheet = EasyExcelFactory.writerSheet(1, "联系人").head(ExcelContact.class).build();
                excelWriter.write(getCompany(), dealerSheet);
                excelWriter.write(getContact(), contactSheet);
            }
        }
    
        private List<ExcelCompany> getCompany() {
            List<ExcelCompany> companyList = new ArrayList<>();
            for (int i = 0; i < 5; i++) {
                companyList.add(ExcelCompany.builder()
                        .companyName("笑小枫公司" + i)
                        .province("上海市")
                        .businessProvinceName("山东省")
                        .businessCityName("临沂市")
                        .businessAreaName("河东区")
                        .entStatus("营业")
                        .netAddress("www.xiaoxiaofeng.site")
                        .csdnAddress("https://zhangfz.blog.csdn.net")
                        .employeeMaxCount("100")
                        .startDate(new Date())
                        .build());
            }
            return companyList;
        }
    
        private List<ExcelContact> getContact() {
            List<ExcelContact> contactList = new ArrayList<>();
            for (int i = 0; i < 5; i++) {
                contactList.add(ExcelContact.builder()
                        .companyName("笑小枫公司" + i)
                        .name("笑小枫" + i)
                        .mobile("183000000000")
                        .idCard("371324199011111111")
                        .contactPostName("后端")
                        .build());
            }
            return contactList;
        }
    }
    
    

    测试结果

    浏览器请求:http://localhost:8080/exportExcel

    经销商sheet页信息:

    image-20220610102736604

    联系人sheet页信息:

    image-20220610102750478

    相关属性解读

    image-20220610104915216

    注解

    • ExcelProperty index 指定写到第几列,默认根据成员变量排序。value指定写入的名称,默认成员变量的名字,多个value可以参照快速开始中的复杂头
    • ExcelIgnore 默认所有字段都会写入excel,这个注解会忽略这个字段
    • DateTimeFormat 日期转换,将Date写到excel会调用这个注解。里面的value参照java.text.SimpleDateFormat
    • NumberFormat 数字转换,用Number写excel会调用这个注解。里面的value参照java.text.DecimalFormat
    • ExcelIgnoreUnannotated 默认不加ExcelProperty 的注解的都会参与读写,加了不会参与

    参数

    通用参数

    WriteWorkbook,WriteSheet ,WriteTable都会有的参数,如果为空,默认使用上级。

    • converter 转换器,默认加载了很多转换器。也可以自定义。
    • writeHandler 写的处理器。可以实现WorkbookWriteHandler,SheetWriteHandler,RowWriteHandler,CellWriteHandler,在写入excel的不同阶段会调用
    • relativeHeadRowIndex 距离多少行后开始。也就是开头空几行
    • needHead 是否导出头
    • headclazz二选一。写入文件的头列表,建议使用class。
    • clazzhead二选一。写入文件的头对应的class,也可以使用注解。
    • autoTrim 字符串、表头等数据自动trim

    WriteWorkbook(理解成excel对象)参数

    • excelType 当前excel的类型 默认xlsx
    • outputStreamfile二选一。写入文件的流
    • fileoutputStream二选一。写入的文件
    • templateInputStream 模板的文件流
    • templateFile 模板文件
    • autoCloseStream 自动关闭流。
    • password 写的时候是否需要使用密码
    • useDefaultStyle 写的时候是否是使用默认头

    WriteSheet(就是excel的一个Sheet)参数

    • sheetNo 需要写入的编码。默认0
    • sheetName 需要些的Sheet名称,默认同sheetNo

    WriteTable(就把excel的一个Sheet,一块区域看一个table)参数

    • tableNo 需要写入的编码。默认0

    写在最后

    本文只是用到部分功能,简单的做了一下总结,更多的功能,可以去官网查阅。

    官方文档:https://www.yuque.com/easyexcel/doc/read

    展开全文
  • Java通过EasyExcel导出excel

    千次阅读 2022-03-29 10:53:00
    Java通过EasyExcel导出excel
  • /** * 通用导出 * * @param list 数据源(用于生成excel表的数据) * @param response * @param clazz 对象类型(用于生成excel的表头) */ public void fileExport(List<?> list, HttpServletResponse response, ...
  • 使用easyexcel导出excel表格

    千次阅读 2022-04-20 09:44:00
    想要将数据使用excel表格导出,可以使用easyexcel pom.xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.0.5</...
  • 使用EasyExcel导出Excel

    2022-01-24 09:26:58
    compile 'com.alibaba:easyexcel:2.2.11' 导入Excel样例模板 代码示例 Excel文件导入对应的模板实体,ExcelProperty内容要与导入的Excel列名保持一致,不一致匹配不上 package com.yshenghuo.entity.wrapper; ...
  • 使用easyExcel导出excel文件

    千次阅读 2022-02-13 17:45:17
    1.导入jar包 <dependency>...easyexcel</artifactId> <version>3.0.5</version> </dependency> 2.点击导出按钮,浏览器开始下载对应的数据,也可以实现批量导出 3.实...
  • --easyexcel,推荐使用2.0 以上版本,功能更加完善--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.6</version&...
  • easyexcel 导出excel文件

    2021-11-22 16:08:22
    easyexcel 引入: <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.4</version> </dependency&...
  • ExcelWriter excelWriter = EasyExcel.write(out, clz).build(); WriteSheet writeSheet = EasyExcel.writerSheet(sheetName).build(); excelWriter.write(null, writeSheet); excelWriter.finish(); out...
  • 踩坑:EasyExcel导出excel导出数据为空

    千次阅读 2021-11-24 17:22:42
    我再java代码中导出excel导出数据为空如下图 问题探究 经过断点排查数据 发现数据取出来了 那么问题就不在取数据而在数据写入部分 经过排查翻阅博客发现了这么一句话 读写反射对象用到了Cglib,所以成员变量...
  • 使用EasyExcel导出Excel-字体居中

    千次阅读 2022-02-21 16:09:00
    使用EasyExcel导出Excel-字体居中 引入maven 依赖 <!-- 阿里开源EXCEL--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version&...
  • 下面是我自己做的demo,多sheet导出。 <!-- easyexcel --> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.0.
  • easyExcel 导出 excel 自定义表头

    千次阅读 2020-11-04 14:43:09
    easyExcel 导出 excel 自定义表头 效果图: 代码: @RequestMapping(value = "export",method = RequestMethod.GET) public void export(HttpServletResponse response,Integer yds,Integer sds,String type) throws...
  • easyexcel版本 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.10</version> <exclusions> <exclusio
  • 文章目录背景介绍easyexcel 表头及数据表头简单合并web项目导出方式实践出真知遇到的问题前端联调时excel无法打开   导出数据是后端经典模块之一,从原有的poi到现在的easyexcel等等都在努力的帮助开发们...
  • 最简单的导出excel方式 1、引入EasyExcel Maven依赖 <!-- excel导入导出 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <...
  • 导出失败或者导出内容乱码 前端 后端 代码都没有什么问题为什么报错?????????? 我的问题出在这里,如果网络上其他的方法都试过了,可以试试我这个,type方式写成我这个试试 ...
  • 1、引入easyexcel依赖 !-- 阿里开源easyexcel--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.0-beta2</...
  • 小编最近接到一个导出Excel的需求,需求还是很简单的,只需要把表格展示的信息导出成Excel就可以了,也没有复杂的合并列什么的。 常见的导出Excel的技术: hutool easyExcel poi hutool和easyExcel都是对poi的封装...
  • org.apache.poi.ss.usermodel.CellStyle.setAlignment(S)V 查了下官方文档 说是jar 冲突了 因为非常多的复杂的word文档要导出 所以 自己在项目里面添加了读取ftl 模板导出的方式 做完之后测试导出excel数据是可以的...
  • EasyExcel导出Excel到本地

    千次阅读 2021-03-22 22:29:07
    @ApiOperation(value = "导出Excel") public ResponseData exportExcel(HttpServletRequest request, HttpServletResponse response) throws IOException { applyRecordService.exportExce..
  • easyExcel导出excel的简单使用Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些...
  • alibaba easyExcel 导出excel(解决乱码)

    千次阅读 2021-08-11 15:55:18
    1.添加依赖 <dependency> <...easyexcel</artifactId> <version>2.1.6</version> </dependency> 2.查询需要导出的数据 List<HitEntity> hitEntities = f
  • 使用easyExcel导出excel数据案例

    千次阅读 2020-10-15 11:10:50
    easyExcel简介: Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。...easyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加
  • EasyExcel导出文件失败
  • Java- - 使用easyexcel 导出Excel 引入依赖 <!-- easyExcel--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> </dependency> ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,100
精华内容 2,840
关键字:

easyexcel导出excel