数据导出excel,导出csv

public class FileUtil {

    private static Logger log = LoggerFactory.getLogger(FileUtil.class);

    private FileUtil() {

    }

    /**
     * 文件名加UUID
     *
     * @param filename 文件名
     * @return UUID_文件名
     */
    private static String makeFileName(String filename) {
        return UUID.randomUUID().toString() + "_" + filename;
    }

    /**
     * 文件名特殊字符过滤
     *
     * @param fileName 文件名
     * @return 过滤后的文件名
     * @throws PatternSyntaxException 正则异常
     */
    public static String stringFilter(String fileName) {
        String regEx = "[`~!@#$%^&*+=|{}':; ',//[//]<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(fileName);
        return m.replaceAll("").trim();
    }

    /**
     * 生成Excel文件
     *
     * @param filename 文件名称
     * @param list     文件内容List
     * @param clazz    List中的对象类型
     */
    public static ResultInfo createExcelByPOIKit(String filename, List<?> list, Class<?> clazz) {

        if (null == list || list.isEmpty()) {
            return ResultInfo.failure("导出数据为空!");
        } else {
            boolean operateSign = false;
            String fileName = filename + ".xlsx";
//            fileName = makeFileName(fileName);
            try {
                File fileDir = new File("file");
                if (!fileDir.exists()) {
                    fileDir.mkdir();
                }
                String path = "C:\\Users\\Administrator\\Desktop\\" + fileName;
                FileOutputStream fos;
                fos = new FileOutputStream(path);
                operateSign = ExcelUtils.builder(clazz)
                        // 设置每个sheet的最大记录数,默认为10000,可不设置
                        // .setMaxSheetRecords(10000)
                        .toExcel(list, "查询结果", fos);
            } catch (FileNotFoundException e) {
                log.error("文件未找到", e);
            }
            if (operateSign) {
                return ResultInfo.success().build(fileName);
            } else {
                return ResultInfo.failure("导出Excel失败,请联系网站管理员!");
            }
        }
    }

    /**
     * 生成Csv文件
     *
     * @param filename 文件名称
     * @param list     文件内容List
     * @param clazz    List中的对象类型
     */
    public static ResultInfo createCsv(String filename, List<?> list, Class<?> clazz) {

        if (null == list || list.isEmpty()) {
            return ResultInfo.failure("导出数据为空!");
        } else {
            boolean operateSign;
            String fileName = filename + ".csv";
//            fileName = makeFileName(fileName);

            File fileDir = new File("file");
            if (!fileDir.exists()) {
                fileDir.mkdir();
            }
            String path = "C:\\Users\\Administrator\\Desktop\\" + fileName;
            operateSign = ExcelUtils.builder(clazz)
                    .toCsv(list, path);
            if (operateSign) {
                return ResultInfo.success().build(fileName);
            } else {
                return ResultInfo.failure("导出Csv失败,请联系网站管理员!");
            }
        }
    }

    /**
     * @description: 删除文件
     * @modified by:
     * @return:
     */
    public static void removeFile(File path) {
        log.info("删除已经导出的临时文件");
        if (path.isDirectory()) {
            File[] child = path.listFiles();
            if (child != null && child.length != 0) {
                for (int i = 0; i < child.length; i++) {
                    removeFile(child[i]);
                    child[i].delete();
                }
            }
        }
        path.delete();
    }

}

源码:
https://github.com/pingzhengguo/excelproject
https://gitee.com/BingZhenPingGuo/excelproject

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值