美文网首页
springboot 在项目中生成excel文件

springboot 在项目中生成excel文件

作者: 侧耳倾听y | 来源:发表于2020-11-21 22:49 被阅读0次

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

    • 集成easyExcel

    引入依赖

    <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文件带上即可。

    相关文章

      网友评论

          本文标题:springboot 在项目中生成excel文件

          本文链接:https://www.haomeiwen.com/subject/ctkyiktx.html