Java后台生成指定路径下创建指定名称的文件

1.Java后台生成指定路径下创建指定名称的CSV文件

java 复制代码
/**
     * <生成csv文件>
     * @param filePath    文件路径名称
     * @param fileName    文件名称
     * @param colNameList 标题数据信息
     * @param dataList    CSV的文件数据
     * @return filePath+fileName
     * @throws
     */
    public static File generateCsv(String filePath, String fileName,
                                     List<String> colNameList, List<List<String>> dataList) throws IOException {
        BufferedWriter csvWrite = null;
        String fileRealPath = filePath +"/"+ fileName + ".csv";
        try {
            //定义文件类型
            File csvFile = new File(fileRealPath);
            //获取文件目录
            if (!csvFile.exists()){
                File parentFile = csvFile.getParentFile();
                if (!parentFile.exists()){
                    if (parentFile.mkdirs()){
                        log.info("目录创建成功:"+parentFile.getAbsolutePath());
                    }else{
                        log.info("目录创建失败:"+parentFile.getAbsolutePath());
                    }
                }
            }
            //创建文件
            if (csvFile.createNewFile()){
                log.info("文件创建成功:"+csvFile.getAbsolutePath());
            }else{
                log.info("文件创建失败:"+csvFile.getAbsolutePath());
            }
            //先写入UTF-8-BOM编码头内容(防止用Excel文件打开CSV文件出现标题乱码情况)
            byte[] utf8bom={(byte)0xef,(byte)0xbb,(byte)0xbf};
            FileOutputStream fileOutputStream = new FileOutputStream(csvFile);
            fileOutputStream.write(utf8bom);
            csvWrite = new BufferedWriter(
                    new OutputStreamWriter(fileOutputStream, "UTF-8"), 1024);
            //写入表头
            write(colNameList, csvWrite);
            //写入数据
            for (List<String> dataPerRow : dataList) {
                write(dataPerRow, csvWrite);
            }
            csvWrite.flush();
            return csvFile;
        }
        catch (IOException e) {
            log.error("csv文件生成失败,原因:", e);
            throw new IOException("csv文件生成失败");
        }
        finally {
            try {
                if (null != csvWrite) {
                    csvWrite.close();
                }
            }
            catch (IOException e) {
                log.error("关闭文件流失败,原因:", e);
                throw new IOException("关闭文件流失败");
            }
        }
    }



	/**
     *将数据按行写入数据
     *@param dataList 每一行的数据集合
     *@param csvWreite 
     *@throws IOException
     */
    private static void write(List<String> dataList, BufferedWriter csvWrite) throws IOException {
        for (String data : dataList) {
            StringBuffer buffer = new StringBuffer();
            String rowStr = buffer.append("\"").append(data).append("\",").toString();
            csvWrite.write(rowStr);
        }
        csvWrite.newLine();
    }

2.Java后台生成指定路径下创建指定名称的xlsx文件

java 复制代码
 /**
     * 导出excel文件
     * @param filePath 文件路径
     * @param fileName 文件名称
     * @param colNameList 标题名称
     * @param dataList 每一页sheet数据列表
     * @return
     */
    public static File generateExcel(String filePath, String fileName,
                                     List<String> colNameList, List<Map<String,Object>> dataList) throws IOException {
        String fileRealPath = filePath +"/"+ fileName + ".xlsx";
        File excelFile = new File(fileRealPath);
        //获取文件目录
        if (!excelFile.exists()){
            File parentFile = excelFile.getParentFile();
            if (!parentFile.exists()){
                if (parentFile.mkdirs()){
                    log.info("目录创建成功:"+parentFile.getAbsolutePath());
                }else{
                    log.info("目录创建失败:"+parentFile.getAbsolutePath());
                }
            }
        }
        //创建文件
        if (excelFile.createNewFile()){
            log.info("文件创建成功:"+excelFile.getAbsolutePath());
        }else{
            log.info("文件创建失败:"+excelFile.getAbsolutePath());
        }
        Workbook workbook = new XSSFWorkbook(); // 创建Workbook
        for (Map<String, Object> map : dataList) {
        	//sheet的名称
            String sheetName = MapUtils.getString(map, "sheetName");
            //当前sheet的数据集合
            List<List<String>> tempDataList = (List<List<String>>)MapUtils.getObject(map, "dataList");
            Sheet sheet = workbook.createSheet(sheetName); // 创建Sheet

            // 创建表头
            Row headerRow = sheet.createRow(0);
            for (int i = 0; i < colNameList.size(); i++) {
                headerRow.createCell(i).setCellValue(colNameList.get(i));
            }
			
            if (tempDataList != null && tempDataList.size() > 0){
                // 写入数据
                for (int i = 0; i < tempDataList.size(); i++) {
                    List<String> lineDataList = tempDataList.get(i);
                    Row row = sheet.createRow(i + 1); // 从第二行开始写数据
                    for (int j = 0; j < lineDataList.size(); j++) {
                        row.createCell(j).setCellValue(lineDataList.get(j));
                    }
                }
            }


        }
        // 写入文件
        try (FileOutputStream fileOut = new FileOutputStream(excelFile)) {
            workbook.write(fileOut);
        } catch (IOException e) {
            log.error("写入文件失败:"+e,e.getMessage());
        } finally {
            try {
                workbook.close(); // 关闭Workbook释放资源
            } catch (IOException e) {
                log.error(" 关闭Workbook失败:"+e,e.getMessage());
            }
        }

        return excelFile;
    }
相关推荐
Theodore_10223 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
网易独家音乐人Mike Zhou3 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
安静读书3 小时前
Python解析视频FPS(帧率)、分辨率信息
python·opencv·音视频
冰帝海岸4 小时前
01-spring security认证笔记
java·笔记·spring
世间万物皆对象4 小时前
Spring Boot核心概念:日志管理
java·spring boot·单元测试
没书读了5 小时前
ssm框架-spring-spring声明式事务
java·数据库·spring
小二·5 小时前
java基础面试题笔记(基础篇)
java·笔记·python
开心工作室_kaic5 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
懒洋洋大魔王5 小时前
RocketMQ的使⽤
java·rocketmq·java-rocketmq
武子康5 小时前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud