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

文件类:如何将excel文件转为csv文件(且保留时间格式)?

最近有个场景,在ftp服务器上,读取csv文件并入库,但是客户提供的一部分文件却是xls文件,就得搞个将excel转为csv文件的方法,话不多说直接开干。

方法

    public static void convertExcelToCSV(String excelFilePath, String csvFilePath) throws IOException {FileInputStream inputStream = new FileInputStream(excelFilePath);Workbook workbook = getWorkbook(inputStream, excelFilePath);inputStream.close();FileWriter writer = new FileWriter(csvFilePath);for (int sheetIndex = 0; sheetIndex < workbook.getNumberOfSheets(); sheetIndex++) {Sheet sheet = workbook.getSheetAt(sheetIndex);Iterator<Row> rowIterator = sheet.iterator();while (rowIterator.hasNext()) {Row row = rowIterator.next();Iterator<Cell> cellIterator = row.cellIterator();StringBuilder stringBuilder = new StringBuilder();while (cellIterator.hasNext()) {Cell cell = cellIterator.next();stringBuilder.append(getCellValue(cell));if (cellIterator.hasNext()) {stringBuilder.append(",");}}writer.write(stringBuilder.toString() + "\n");}if (sheetIndex < workbook.getNumberOfSheets() - 1) {writer.write("\n"); // 在不同工作表之间添加一个空行}}writer.flush();writer.close();workbook.close();}private static Workbook getWorkbook(FileInputStream inputStream, String excelFilePath) throws IOException {Workbook workbook = null;if (excelFilePath.endsWith("xlsx")) {workbook = new XSSFWorkbook(inputStream);} else if (excelFilePath.endsWith("xls")) {workbook = new HSSFWorkbook(inputStream);} else {throw new IllegalArgumentException("The specified file is not an Excel file");}return workbook;}private static String getCellValue(Cell cell) {//DataFormatter formatter = new DataFormatter();String formatPattern = "yyyy-MM-dd HH:mm:ss"; // 自定义日期时间格式//FormulaEvaluator evaluator = cell.getSheet().getWorkbook().getCreationHelper().createFormulaEvaluator();switch (cell.getCellType()) {case STRING:return cell.getRichStringCellValue().getString();case NUMERIC:if (DateUtil.isCellDateFormatted(cell)) {Date date = cell.getDateCellValue();DateFormat dateFormat = new SimpleDateFormat(formatPattern);return dateFormat.format(date);} else {return Double.toString(cell.getNumericCellValue());}case BOOLEAN:return Boolean.toString(cell.getBooleanCellValue());case FORMULA:return cell.getCellFormula();default:return "";}}

测试

    public static void main(String[] args) {String excelFilePath = "D:\\我是excel文件.xlsx";String csvFilePath = "D:\\我是csv文件.csv";try {convertExcelToCSV(excelFilePath, csvFilePath);System.out.println("Excel file converted to CSV successfully!");} catch (IOException e) {e.printStackTrace();}}

以上为整合保留时间格式需求的全部代码,亲测非常好用!

相关文章:

文件类:如何将excel文件转为csv文件(且保留时间格式)?

最近有个场景&#xff0c;在ftp服务器上&#xff0c;读取csv文件并入库&#xff0c;但是客户提供的一部分文件却是xls文件&#xff0c;就得搞个将excel转为csv文件的方法&#xff0c;话不多说直接开干。 方法 public static void convertExcelToCSV(String excelFilePath, Str…...

FiddlerScript Rules修改-更改发包中的cookie

直接在fiddler script editor中增加如下处理代码即可 推荐文档oSession -- 参数说明 测试笔记 看云...

直升机停机坪的H代表什么

可为什么直升机的停机坪为什么要用“H”来表示呢&#xff1f; Helicopter 直升机停机坪的“H”来自直升机的英文Helicopter的首字母&#xff0c;也是停机坪的识别标志&#xff0c;表示可用于直升机的垂直起降&#xff0c;方便于直升机飞行员在空中能快速识别降落位置。 另外…...

hyperworks软件许可优化解决方案

Hyperworks软件介绍 Altair 仿真驱动设计改变了产品开发&#xff0c;使工程师能够减少设计迭代和原型测试。提升科学计算能力扩大了应用分析的机会&#xff0c;使大型设计研究能够在限定的项目时间完成。现在&#xff0c;人工智能在工程领域的应用再次改变了产品开发。基于物理…...

四川赤橙宏海商务信息咨询有限公司抖音电商服务靠谱吗?

在数字化浪潮席卷全球的今天&#xff0c;电商行业蓬勃发展&#xff0c;各种新兴电商平台层出不穷。其中&#xff0c;抖音电商以其独特的社交属性和庞大的用户基础&#xff0c;迅速崛起为行业新星。四川赤橙宏海商务信息咨询有限公司&#xff0c;作为专注于抖音电商服务的佼佼者…...

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【密钥派生(C/C++)】

密钥派生(C/C) 以HKDF256密钥为例&#xff0c;完成密钥派生。具体的场景介绍及支持的算法规格&#xff0c;请参考[密钥生成支持的算法]。 在CMake脚本中链接相关动态库 target_link_libraries(entry PUBLIC libhuks_ndk.z.so)开发步骤 生成密钥 指定密钥别名。 初始化密钥属…...

【ARMv8/v9 GIC 系列 6 -- 中断优先级详细介绍】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 Interrupt prioritizationInterrupt Priority ValueSGI And PPI Priority SetSecure And Non-secure Priority AccessInterrupt prioritization 在ARM GICv3和GICv4架构中,中断的优先级化(prioritization)是通过以下几种方式来描…...

【CORS 报错】跨域请求问题:CORS 多种环境下的解决方案

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、CORS错误的常见原因二、解决方案1. Vue3 Vite项目下的解决方案创建Vue3 Vite项目配置Vite的代理发送请求 2. jQuery项目下的解决方案使用CORS请求头使用JSONP 3. 其他环境下的解决方案使用服务器端代理设置CORS头使用…...

【Scrapy】深入了解 Scrapy 中间件中的 process_spider_output 方法

准我快乐地重饰演某段美丽故事主人 饰演你旧年共寻梦的恋人 再去做没流着情泪的伊人 假装再有从前演过的戏份 重饰演某段美丽故事主人 饰演你旧年共寻梦的恋人 你纵是未明白仍夜深一人 穿起你那无言毛衣当跟你接近 &#x1f3b5; 陈慧娴《傻女》 Scrapy 是…...

GigE Vision GVCP/GVSP

GIGE协议&#xff0c;全称Gigabit Ethernet Vision协议&#xff0c;是一种基于千兆以太网&#xff08;Gigabit Ethernet&#xff09;技术开发的相机接口标准&#xff0c;主要用于高速图像采集和处理。该协议通过以太网技术实现图像数据和控制信号的传输&#xff0c;具有低成本、…...

结合C++智能指针聊聊观察者模式

0. 问题 问题是这样&#xff0c;三个类A,B,C。AC都有指针指向同一个B类对象&#xff0c;C类可以回收了刚刚生成的B类对象的内存&#xff0c;A类应该对这个指针进行如何操作&#xff0c;才能确保使用该指针时不会产生野指针问题发生未定义结果&#xff1f; 这是前两天面试的时候…...

【React】监听浏览器返回事件

文章目录 popstate事件&#xff1a;点击浏览器前进&#xff0c;后退会触发popstate事件即&#xff0c;在同一文档的两个历史记录条目之间导航会触发该事件 useEffect(() > {const handlePageBack () > {// 此处写你想要触发的事件console.log(浏览器返回按钮被点击了&a…...

python用selenium网页模拟时无法定位元素解决方法1

进行网页模拟时&#xff0c;有时我们明明可以复制出元素的xpath&#xff0c;但是用selenium的xpath click无法点击到元素。这种情况有几种原因&#xff0c;本文写其中一种——iframe 比如下图网址&#xff0c;第二行出现iframe&#xff0c;则往下的行内元素都会定位不到&#…...

css中文字书写方向

writing-mode 是 CSS 中的一个属性&#xff0c;用于设置文本、内联元素、表格单元格和表格列的书写方向、文本排列以及块流方向。以下是对 writing-mode 属性的详细介绍&#xff1a; 1. 语法和值 语法&#xff1a;writing-mode: horizontal-tb | vertical-rl | vertical-lr |…...

医学王者刊!影响因子自创刊只增不减,3区跃升1区,国人发文占比6成!

【SciencePub学术】今天给大家推荐的是一本医学领域的SCI&#xff0c;是1本颇富潜力的国产期刊。影响因子自创刊以来就逐年上涨&#xff0c;凭借自己的努力从中科院3区跃迁至中科院1区&#xff0c;据说很多人已经靠信息差吃上了这本期刊的红利&#xff0c;接下来给大家解析一下…...

数据建设实践之大数据平台(五)

安装hive 上传安装包到/opt/software目录并解压 [bigdata@node101 software]$ tar -zxvf hive-3.1.3-with-spark-3.3.1.tar.gz -C /opt/services [bigdata@node101 services]$ mv apache-hive-3.1.3-bin apache-hive-3.1.3 配置环境变量 export JAVA_HOME=/opt/services…...

js原型和类---prototype,__proto__,new,class

原型和原型链 在js中&#xff0c;所有的变量都有原型&#xff0c;原型也可以有原型&#xff0c;原型最终都指向Object 什么是原型 在js中&#xff0c;一个变量被创建出来&#xff0c;它就会被绑定一个原型&#xff1b;比如说&#xff0c;任何一个变量都可以使用console.log打…...

bevfomer self-att to transformer to tensorrt

self-attentation https://blog.csdn.net/weixin_42110638/article/details/134016569 query input* Wq key input* Wk value input* Wv output 求和 query . key * value detr multiScaleDeformableAttn Deformable Attention Module&#xff0c;在图像特征上&#…...

Day01-ElasticSearch的单点部署,集群部署,多实例部署,es-head和postman环境搭建

Day01-ElasticSearch的单点部署&#xff0c;集群部署&#xff0c;多实例部署&#xff0c;es-head和postman环境搭建 0、ElasticSearch的简单介绍1、ElasticSearch的单点部署2、ElasticSearch的集群部署3、基于二进制部署ElasticSearch3.1 准备阶段3.2 部署阶段3.3 使用systemct…...

Linux--DHCP原理与配置

目录 一、DHCP 1、DHCP 服务是什么 2、DHCP 优点 3、为什么使用DHCP 二、DHCP的模式与分配方式 1、DHCP 模式 2、DHCP 分配方式 3、工作原理 3.1 租约过程(四步) 3.2 更新租约 三、DHCP 服务器的配置 3.1 配置DHCP 3.2 dhcpd.conf 的内容构成 3.3 全局设置,作…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化

iOS 应用的发布流程一直是开发链路中最“苹果味”的环节&#xff1a;强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说&#xff0c;这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发&#xff08;例如 Flutter、React Na…...

LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》

&#x1f9e0; LangChain 中 TextSplitter 的使用详解&#xff1a;从基础到进阶&#xff08;附代码&#xff09; 一、前言 在处理大规模文本数据时&#xff0c;特别是在构建知识库或进行大模型训练与推理时&#xff0c;文本切分&#xff08;Text Splitting&#xff09; 是一个…...

机器学习的数学基础:线性模型

线性模型 线性模型的基本形式为&#xff1a; f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法&#xff0c;得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...