package com.ruoyi.utils.excel; import com.alibaba.excel.EasyExcel; import com.ruoyi.common.config.ARDConfig; import com.ruoyi.common.constant.Constants; import java.io.File; import java.util.ArrayList; import java.util.List; /** * @ClassName: TestEasyExcel * @Description: * @Author: 刘苏义 * @Date: 2023年04月28日14:09 * @Version: 1.0 **/ public class EasyExcelUtil { private static void main(String[] args) throws Exception { //实现excel写的操作 // 设置写入文件夹地址和excel文件名 String fileName = "G:\\java.xlsx"; // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 //write方法两个参数 ,第一个参数文件路径名称,第二个参数实体类class EasyExcel.write(fileName, ExcelData.class).sheet("第一个sheet").doWrite(data("11")); } //循环设置要添加的数据,最终封装到list集合中 private static List data(String data) { List list = new ArrayList(); ExcelData excelData = new ExcelData(); excelData.setName(data); list.add(excelData); return list; } public static void writeAppend(String fileName, String msg) { File file = new File(fileName); File parentDir = file.getParentFile(); if (!parentDir.exists()) { parentDir.mkdirs(); // 创建文件所在的目录,包括父目录 } // 本地临时录像地址 String tempExcel = ARDConfig.getProfile() + Constants.LOCAL_EXCEL_TEMP_PREFIX + "/temp.xlsx"; File tempFile = new File(tempExcel); List existingData = new ArrayList<>(); if (file.exists()) { // 读取已有数据 existingData = EasyExcel.read(file).head(ExcelData.class).sheet().doReadSync(); // 去除重复数据 boolean exist = existingData.stream().anyMatch(excelData -> excelData.getName().equals(msg)); if (exist) { return; } } if (!existingData.isEmpty()) { // 第二次按照原有格式,不需要表头,追加写入 EasyExcel.write(file, ExcelData.class).needHead(false) .withTemplate(file).file(tempFile).sheet().doWrite(data(msg)); } else { // 第一次写入需要表头 EasyExcel.write(file, ExcelData.class).sheet("井不存在").doWrite(data(msg)); } if (tempFile.exists()) { file.delete(); tempFile.renameTo(file); } } }