springboot 在项目中生成excel文件

2020-11-21  本文已影响0人  侧耳倾听y

项目中可能会有发送邮件时附带excel附件的需求,下面提供一种实现思路:在服务所在的服务器上,生成excel文件;发送邮件时,把excel文件作为附件一起发送,发送完成之后,删除excel文件。

引入依赖

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

编写工具类

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;


import java.util.List;

public class ExcelUtil {

    /**
     * 在指定位置生成excel文件
     *
     * @param fileName 文件路径
     * @param clazz    导出数据类型
     * @param list     导出数据
     * @param <T>      可以不加这个也行,但是会有警告,看起来不舒服
     */
    public static <T> void writeToExcel(String fileName, Class<T> clazz, List<T> list) {
        ExcelWriter excelWriter = EasyExcel.write(fileName).build();
        WriteSheet sheet = EasyExcel.writerSheet().head(clazz).build();
        excelWriter.write(list, sheet);
        excelWriter.finish();
    }
}
import com.example.utils.ExcelUtil;

import java.io.File;
import java.util.List;

public class GeneratorFileService {

    /**
     * 相对路径,文件会生成在与项目平级的目录
     */
    private final String FILE_PATH = "file/excel";

    private final String EXCEL_SUFFIX = ".xlsx";

    /**
     * 生成excel文件
     *
     * @param fileName
     * @param clazz
     * @param list
     * @param <T>
     * @return
     */
    public <T> File generatorExcel(String fileName, Class<T> clazz, List<T> list) {
        if (generateFilePath()) {
            return null;
        }
        String fileFullName = FILE_PATH + fileName + EXCEL_SUFFIX;
        ExcelUtil.writeToExcel(fileFullName, clazz, list);
        return new File(fileFullName);
    }

    /**
     * 删除文件
     *
     * @param file
     * @return
     */
    public boolean deleteFile(File file) {
        if (file != null) {
            return file.delete();
        }
        return true;
    }

    private boolean generateFilePath() {
        File path = new File(FILE_PATH);
        if (path.exists()) {
            return true;
        } else {
            return path.mkdirs();
        }
    }
}

发送邮件时,把生成的excel文件带上即可。

上一篇下一篇

猜你喜欢

热点阅读