当前位置: 首页 > 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;}

相关文章:

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

1.Java后台生成指定路径下创建指定名称的CSV文件 /*** <生成csv文件>* param filePath 文件路径名称* param fileName 文件名称* param colNameList 标题数据信息* param dataList CSV的文件数据* return filePathfileName* throws*/public static File genera…...

sqlcoder70b模型,如果需要训练或者微调需要什么样的GPU机器

要训练或微调 SQLCoder-70B 这样的大规模模型&#xff0c;需要高性能 GPU 资源。以下是硬件资源的推荐配置&#xff0c;特别是针对内存需求较大的模型&#xff1a; 1. GPU 显存要求 至少 8 张 A100 80GB GPUs&#xff1a;70B 参数模型在微调时需要高显存&#xff0c;80GB A10…...

【Python实战案例】爬虫项目实例(附赠源码)

文章目录 声明安装必要的库项目结构技术细节小结 声明 请您遵守网站的robots文件规定&#xff0c;本文目的只是做学习交流使用&#xff0c;包括多个模块&#xff0c;例如数据存储、日志记录、错误处理、多线程或异步请求 安装必要的库 pip install requests beautifulsoup4 sq…...

PDF多功能工具箱 PDF Shaper v14.6

如今对PDF处理的软件很多都是只是单一的功能。PDF Shaper给你完全不同的体验&#xff0c;因为PDF Shaper是一款免费的PDF工具集合的软件。有了PDF Shaper&#xff0c;你以后再也不用下载其他处理PDF的软件了。PDF Shaper的功能有&#xff1a;合并&#xff0c;分割&#xff0c;加…...

Jupyter Notebook添加kernel的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

Linux 无名管道

无名管道&#xff08;unnamed pipe&#xff09;是一种进程间通信的方式&#xff0c;通常用于父子进程之间的通信。下面是使用无名管道的基本步骤&#xff1a; pipe 调用的返回值如下&#xff1a; 成功时&#xff1a;pipe 调用成功时返回 0。失败时&#xff1a;如果 pipe 调用…...

Java项目实战II基于Spring Boot的药店管理系统的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着医疗行业的快速发展和人们对健康需…...

前端拖拽库方案之react-beautiful-dnd

近期&#xff0c;知名 React 拖拽库 react-beautiful-dnd 宣布了项目弃用的决定&#xff0c;未来将不再维护。这一决定源于其存在的缺陷与局限性&#xff0c;促使作者转向开发一个更加现代化的拖拽解决方案——Pragmatic drag and drop&#xff08;下面会介绍&#xff09;&…...

【题解】CF2033G

题目 CF2033G 分析 一道很显然是树形dp的题&#xff0c;但非常恶心QwQ。   先不管复杂度&#xff0c;找找递推关系&#xff0c;一种很直接的想法如下&#xff08;我觉得是错误的&#xff09;&#xff1a; d p [ i ] [ k ] m a x ( d p [ f a i ] [ k − 1 ] , d p [ s o …...

【error】 react 控制台报错Invalid hook call

目录 事件起因解决办法结束语 事件起因 我的前端react ant-design-pro项目能正常启动 但是网页这边就是一片空白&#xff0c;然后在浏览器的控制台报错&#xff1a; index.js:1 Warning: Invalid hook call. Hooks can only be called inside of the body of a function co…...

SDL基本使用

#include <stdio.h>#include <SDL.h>#undef main int main() {printf("Hello World!\n");SDL_Window *window NULL; // 声明窗口SDL_Init(SDL_INIT_VIDEO); // 初始化SDL// 创建SDL Windowwindow SDL_CreateWindow("Basic Window"…...

大模型的temperature参数

目录 模型的temperature参数 一、定义与作用 二、工作原理 三、举例说明 四、应用场景与调整策略 五、注意事项 模型的temperature参数 是人工智能领域中,特别是在生成式模型中使用的一个重要概念。它主要用于控制生成结果的多样性和随机性。以下是对该参数的详细解释和…...

软件项目功能复用指南,复用方案,评估方案(word原件)

6 复用原则 6.1 单一职责原则 SRP &#xff08;Single Responsibility Principle&#xff09; 6.2 开放封闭原则 OCP &#xff08;Open Closed Principle&#xff09; 6.3 Liskov 替换原则 LSP &#xff08;Liskov Subtitle Principle&#xff09; 6.4 接口隔离原则 ISP &a…...

leetcode 3255 长度为 K 的子数组的能量值 II 中等

给你一个长度为 n 的整数数组 nums 和一个正整数 k 。 一个数组的 能量值 定义为&#xff1a; 如果 所有 元素都是依次 连续 且 上升 的&#xff0c;那么能量值为 最大 的元素。否则为 -1 。 你需要求出 nums 中所有长度为 k 的 子数组 的能量值。 请你返回一个长度为 n …...

CCS下载安装(以12.3.0版本为例)

Code Composer Studio 是一个集成开发环境 (IDE)&#xff0c;简称CCS软件。支持 TI 的微控制器和嵌入式处理器产品的开发。Code Composer Studio 包含一整套用于开发和调试嵌入式应用程序的工具。 CCS9.3.0及以上版本不需要License文件&#xff0c;但是CCS旧版本比如CCS5.5.0需…...

C++STL容器详解——list

目录 一.list 1.list的介绍 2.为什么会有list? 二.list的常见接口 1.list的构造函数 2.list的遍历 3.迭代器类型 4.list的头插头删和尾插尾删 5.list任意位置的插入和删除 6.list的sort()及reverse() 7.迭代器失效 三.整体代码 一.list 1.list的介绍 list的文档说…...

linux tar 打包为多个文件

将目录打包成多个大小为 80MB 的文件&#xff0c;可以使用以下命令&#xff1a; tar -cf - my_folder | split -b 80m - my_folder.tar.解释&#xff1a; tar -cf - my_folder 将 my_folder 目录打包成一个 tar 文件并通过管道 (|) 输出到标准输出。 split -b 80m - my_fold…...

json字符串与python字典的区别与联系

json字符串与python中自带的字典类型外表长的很像&#xff0c;很容易区分不清楚&#xff0c;它们之间有着本质的区别&#xff0c;可以通过内置的json模块来互相转换。 文章目录 1、Python字典2、JSON数据格式3、JSON与python字典的区别4、JSON与python字典相互转换4.1 json字符…...

数据结构-链表【chapter1】【c语言版】

目录 1 链表的优势&#xff1a; 2 链表的组成: 3.一般使用结构体的形式来实现链表&#xff1a; 4.单向链表实现(创建&#xff0c;遍历&#xff0c;释放)&#xff1a; 4.1代码关键点备注&#xff1a; 5.查找节点&#xff1a; 5.1.按值查找节点 5.2.按位置查找节点 5.3 …...

OJ05:989. 数组形式的整数加法

目录 题目思路分析代码展示 题目 整数的 数组形式 num 是按照从左到右的顺序表示其数字的数组。 例如&#xff0c;对于 num 1321 &#xff0c;数组形式是 [1,3,2,1] 。 给定 num &#xff0c;整数的 数组形式 &#xff0c;和整数 k &#xff0c;返回 整数 num k 的 数组形…...

Python实战:用SymPy解常微分方程 vs 偏微分方程的5个关键差异

Python实战&#xff1a;用SymPy解常微分方程 vs 偏微分方程的5个关键差异 微分方程是数学建模的核心工具&#xff0c;而Python的SymPy库让符号计算变得触手可及。但当你真正在Jupyter Notebook中敲下dsolve()命令时&#xff0c;是否困惑过为什么有些方程秒出结果&#xff0c;有…...

FoldingNet实战:用Python复现CVPR‘18点云自编码器(附PyTorch代码)

FoldingNet实战&#xff1a;从理论到PyTorch实现的全流程拆解 在三维视觉领域&#xff0c;点云数据处理一直是计算机视觉研究的核心挑战之一。2018年CVPR会议上提出的FoldingNet&#xff0c;以其独特的"纸张折叠"思想为点云自编码器设计开辟了新路径。不同于传统方法…...

Spring Batch 大数据量处理实战:从入门到精通

Spring Batch 大数据量处理实战&#xff1a;从入门到精通别叫我大神&#xff0c;叫我 Alex 就好。处理百万级数据不用愁&#xff0c;Spring Batch 让批处理变得优雅而高效。一、Spring Batch 基础架构 1.1 核心配置 Configuration EnableBatchProcessing public class BatchCon…...

告别纯理论:用OAI 5G开源平台+USRP B210硬件,实测端到端5G SA数据业务

从零构建5G SA实验环境&#xff1a;OAI开源平台与USRP B210实战指南 当5G技术从实验室走向商业化应用时&#xff0c;许多开发者面临一个尴尬的现实&#xff1a;理论知识与实际操作之间存在巨大鸿沟。本文将带你跨越这道鸿沟&#xff0c;使用OAI开源平台和USRP B210软件定义无线…...

难点突破:HR 每天看 200 份简历,80% 时间都在做无效劳动

去年某互联网公司招一个产品经理&#xff0c;收到 847 份简历。HR 小王花了整整三天时间初筛&#xff0c;最后发现真正符合要求的只有 23 个人。更让人崩溃的是&#xff0c;这 23 个人里有 5 个是第二天才看到的——因为简历太多&#xff0c;优质候选人被淹没在简历海里。 这不…...

FastAPI项目PyInstaller打包实战:避坑指南与最佳实践

1. 为什么需要打包FastAPI项目&#xff1f; 当你用FastAPI开发完一个Web应用后&#xff0c;最终需要部署到生产环境。传统方式要求服务器安装Python环境、配置依赖库&#xff0c;这个过程既繁琐又容易出错。PyInstaller的价值就在于能把整个项目打包成独立可执行文件&#xff0…...

SecGPT-14B镜像免配置:内置模型路径固定,便于Docker volume持久化备份

SecGPT-14B镜像免配置&#xff1a;内置模型路径固定&#xff0c;便于Docker volume持久化备份 1. 镜像特点与核心价值 SecGPT-14B是一款专为网络安全领域优化的文本生成模型&#xff0c;基于Qwen2ForCausalLM架构开发。这个预置镜像的最大特点是开箱即用&#xff0c;无需用户…...

BilibiliDown:三分钟掌握跨平台B站视频批量下载终极方案

BilibiliDown&#xff1a;三分钟掌握跨平台B站视频批量下载终极方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors…...

BilibiliCommentScraper:革新性全量数据采集的技术突破方案

BilibiliCommentScraper&#xff1a;革新性全量数据采集的技术突破方案 【免费下载链接】BilibiliCommentScraper 项目地址: https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper 在当今数据驱动决策的时代&#xff0c;高效采集方案与完整数据获取已成为内容分析…...

STM32磁悬浮平衡术(一):PID算法调校与硬件选型指南

1. PID算法&#xff1a;磁悬浮系统的"大脑" 磁悬浮系统的核心挑战在于如何让浮子稳定悬浮。想象一下&#xff0c;你要用手指顶着一根铅笔保持直立——这需要不断微调手指的位置来抵消铅笔的倾斜。PID算法就是STM32中扮演这个"微调手指"角色的关键程序。 PI…...