EasyExcel导入导出多sheet页

依赖

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

导入导出类

@Data
public class Export implements Serializable {
    private static final long serialVersionUID = 1L;
​
    @ExcelProperty(value = "value")
    @ApiModelProperty(value = "value")
    private String value;
​
    @ExcelProperty(value = "id")
    @ApiModelProperty(value = "id")
    private String id;
}

监听器

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
​
import java.util.ArrayList;
import java.util.List;
​
/**
 * excel表格读取监视器
 */
public class ExcelListener extends AnalysisEventListener {
    //可以通过实例获取该值
    private List<Object> datas = new ArrayList<Object>();
    public void invoke(Object o, AnalysisContext analysisContext) {
        datas.add(o);
        doSomething(o);
    }
​
    private void doSomething(Object object) {
    }
​
    public List<Object> getDatas() {
        return datas;
    }
​
    public void setDatas(List<Object> datas) {
        this.datas = datas;
    }
​
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
    }
}

导入

@GetMapping("/import")
public void import(MultipartFile file) {
    imports(file);
}
​
public void import(MultipartFile file) {
    InputStream inputStream = null;
    try {
        inputStream = file.getInputStream();
        ExcelListener listener = new ExcelListener();
        ExcelReader excelReader = EasyExcel.read(inputStream, listener).build();
        // 第一个sheet读取类型
        ReadSheet sheet0 = EasyExcel.readSheet(0).head(Export.class).build();
        // 第二个sheet读取类型
        ReadSheet sheet1 = EasyExcel.readSheet(1).head(Export.class).build();
        // 开始读取第一个sheet数据
        excelReader.read(sheet0);
        List<Object> sheetData0 = listener.getDatas();
        log.info("sheetData0:{}", JSONObject.toJSONString(sheetData0));
        // 清空上次读取数据
        listener.getDatas().clear();
        // 开始读取第二个sheet数据
        excelReader.read(sheet1);
        List<Object> sheetData1 = listener.getDatas();
        log.info("sheetData1:{}", JSONObject.toJSONString(sheetData1));
    } catch (Exception e) {
        log.error("导入异常:{}", e.getMessage());
    } finally {
        if (inputStream != null) {
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

导出

@GetMapping("/export")
public void export(HttpServletResponse response, @RequestParam("ids") String ids) {
   export(response, ids);
}
​
public void export(HttpServletResponse response, String ids) {
   List<String> idList = Arrays.asList(ids.split(","));
   List<Export> datas = service.queryByIds(ids);
   OutputStream outputStream = null;
   try {
       outputStream = response.getOutputStream();
       ExcelWriter writer = EasyExcel.write(outputStream).build();
 
       WriteSheet sheet0 = EasyExcel.writerSheet(0, "第一页").head(Export.class).build();
       writer.write(datas, sheet0);
​
       WriteSheet sheet1 = EasyExcel.writerSheet(1, "第二页").head(Export.class).build();
       writer.write(datas, sheet1);
       
       String fileName = URLEncoder.encode("导出", String.valueOf(StandardCharsets.UTF_8));
       response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding(String.valueOf(StandardCharsets.UTF_8));
        writer.finish();
        outputStream.flush();
  
    } catch (Exception e) {
        log.error("导出异常:{}", e.getMessage());
    } finally {
        if (outputStream != null) {
            try {
                outputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

参考自:Easyexcel导入导出多个sheet_easyexcel 多sheet_宋忠瑾的博客-CSDN博客

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于 EasyExcel导入导出功能,你可以使用 EasyExcel 库来实现。下面是一个简单的示例代码,用于演示如何使用 EasyExcel 进行导入导出操作: ```java import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.metadata.Sheet; import com.alibaba.excel.metadata.Table; import com.alibaba.excel.support.ExcelTypeEnum; import java.util.ArrayList; import java.util.List; public class ExcelUtils { public static void main(String[] args) { // 导出Excel文件 exportExcel(); // 导入Excel文件 importExcel(); } public static void exportExcel() { // 准备数据 List<User> userList = new ArrayList<>(); userList.add(new User("张三", 20)); userList.add(new User("李四", 25)); // 设置表格标题 String[] headers = {"姓名", "年龄"}; // 创建表格对象 Table table = new Table(0); table.setTableStyle(createTableStyle()); table.setHead(headers); // 设置写入Excel的文件路径和文件名 String fileName = "user.xlsx"; // 写入Excel文件 ExcelWriter excelWriter = EasyExcel.write(fileName).withWriterSheet().build(); Sheet sheet = new Sheet(1, 0, User.class); sheet.setTableStyle(createTableStyle()); excelWriter.write(userList, sheet); excelWriter.finish(); } public static void importExcel() { // 读取Excel文件 String fileName = "user.xlsx"; List<User> userList = EasyExcel.read(fileName).head(User.class).sheet().doReadSync(); // 处理导入的数据 for (User user : userList) { System.out.println("姓名: " + user.getName() + ", 年龄: " + user.getAge()); } } private static TableStyle createTableStyle() { // 创建表格样式对象 TableStyle tableStyle = new TableStyle(); tableStyle.setTableContentBackGroundColor(IndexedColors.WHITE); tableStyle.setTableContentFontName("宋体"); tableStyle.setTableContentFontSize((short) 9); return tableStyle; } // 用户类 public static class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } // getter 和 setter 方法 // ... } } ``` 在上面的代码中,`exportExcel` 方法用于导出 Excel 文件,将用户列表数据写入 Excel 中。`importExcel` 方法用于导入 Excel 文件,读取 Excel 中的数据并进行处理。你可以根据自己的需求进行修改和扩展。在使用 EasyExcel 进行导入导出操作时,需要引入相应的库依赖。如果使用 Maven 进行项目管理,可以在 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.10</version> </dependency> ``` 这样就可以使用 EasyExcel导入导出功能了。希望对你有所帮助!如果有其他问题,请随时提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值