EasyExcel 简单导入/导出 Controller Demo

本文主要介绍了在Java中使用EasyExcel进行Excel文件的导入和导出。包含导入EasyExcel依赖的方法,以及单sheet、多sheet的导入和导出示例,还涉及分页查询数据循环写入Excel表格,同时给出了导入监听解析表格数据和导出模版的代码。

1、导入EasyExcel依赖
        
        <!--导入EasyExcel依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.0.5</version>
        </dependency>
————————————————
 

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.google.common.collect.Lists;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeansException;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName ExcelController
 * @Descripition EasyExcel导入/导出
 * @Author admin
 * @Date 2023/10/10 15:40
 */
@RestController
@RequestMapping("/excel/test")
public class ExcelController {

    // Excel文件名称
    private static final String FILE_NAME = "订单列表test";

    //一个sheet装100w数据
    private static final Integer PER_SHEET_ROW_COUNT = 30;
    //每次查询20w数据,每次写入20w数据
    private static final Integer PER_WRITE_ROW_COUNT = 10;


    /**
     * 一、EasyExcel简单导入
     *
     * @param file
     * @throws IOException
     */
    @PostMapping("/import")
    public void importExcel(@RequestParam MultipartFile file) throws IOException {

        InputStream inputStream = file.getInputStream();

        List<CustomerImportClass> list = EasyExcel.read(inputStream)
                .head(CustomerImportClass.class)
                // 设置sheet,默认读取第一个
                .sheet()
                // 设置标题所在行数
                .headRowNumber(1)
                .doReadSync();

        for (CustomerImportClass customerImportClass : list) {
            System.out.println(customerImportClass);
        }

        System.out.println("【成功导入Excel数据】条数 : " + list.size());
    }


    /**
     * 二、EasyExcel简单导入
     * 1.1、单sheet导入(读)Excel
     * 1.2、分页(批次)查询数据循环写入Excel表格
     *
     * @param file
     * @throws IOException
     */
    @PostMapping("/importPage")
    public void importPage(@RequestParam MultipartFile file) throws IOException {

        InputStream inputStream = file.getInputStream();

        // 1.1、单sheet导入(读)Excel
        // 1.2、分页(批次)查询数据循环写入Excel表格
        EasyExcel.read(inputStream, new CustomListener())
                // 设置sheet,默认读取第一个
                .sheet()
                // 设置标题所在行数
                .headRowNumber(1)
                .doRead();

    }


    /**
     * 三、EasyExcel简单导入
     * 1.1、多sheet导入(读)Excel
     * 1.2、分页(批次)查询数据循环写入Excel表格
     *
     * @param file
     * @throws IOException
     */
    @PostMapping("/importSheetPage")
    public void importSheetPage(@RequestParam MultipartFile file) throws IOException {

        InputStream inputStream = file.getInputStream();

        // 2.1、多sheet导入(写入)Excel
        // 2.2、分页(批次)查询数据循环写入Excel表格
        EasyExcel.read(inputStream, new CustomListener())
                // 设置标题所在行数
                .headRowNumber(1)
                .doReadAll();

    }


    /**
     * 一、EasyExcel简单导出
     *
     * @param response
     */
    @GetMapping("/export")
    public void exportExcel(HttpServletResponse response) {
        try {
            // 设置响应结果
            this.setExcelResponseProp(response, FILE_NAME);

            // 模拟业务代码,获取数据集
            List<ExcelTemplate> list = this.queryToExcel();

            EasyExcel.write(response.getOutputStream())
                    .head(ExcelTemplate.class)
                    .excelType(ExcelTypeEnum.XLSX)
                    .sheet(FILE_NAME)
                    .doWrite(list);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }


    /**
     * 二、EasyExcel简单批量导出
     * 1、单sheet导出(写入)Exce

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值