当前位置: 首页 > news >正文

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

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

/*** <生成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文件

 /*** 导出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(); // 创建Workbookfor (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;}

http://www.mrgr.cn/news/67648.html

相关文章:

  • 英伟达HOVER——用于人形机器人的多功能全身控制器:整合不同的控制模式且实现彼此之间的无缝切换
  • nuiapp vue3 uni-ui uni.uploadFile 图片上传
  • 使用AMD GPU进行图像分类的ResNet模型
  • 你使用过哪些MySQL中复杂且使用不频繁的函数?
  • 二进制流文件下载和预览
  • 【Android】Activity组件通信
  • 为什么说距离视图(RV)表示的紧凑性
  • uniapp radio单选
  • 鸿蒙应用App测试-通用测试
  • 【c知道】Hadoop工作原理。
  • 走进 Go 语言基础语法
  • SAP固定资产报废BAPI_ASSET_RETIREMENT_POST的主要参数说明<转载>
  • 电能管理系统(源码+文档+部署+讲解)
  • 6项!国自然基金委员会拟批准资助项目名单公布!
  • 计算机信息安全
  • 解密.Lockbit3.0勒索病毒:恢复加密数据与预防策略
  • 基于电力需求侧能效管理平台的建设及应用
  • 数据集收集器0.3
  • 代码随想录算法训练营Day55 | 图论理论基础、深度优先搜索理论基础、卡玛网 98.所有可达路径、797. 所有可能的路径、广度优先搜索理论基础
  • 魅力标签云,奇幻词云图 —— 数据可视化新境界
  • 新书速览|C++编程之禅:从理论到实践
  • springboot 之 接口数据脱敏
  • 想转行做大模型?AI产品经理转行必读指南
  • 牵手APP引领交友新风尚,多元匹配助力寻找心仪伴侣
  • #渗透测试#SRC漏洞挖掘# 操作系统-Linux系统基础06之ssh服务、history
  • 在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码