poi向已经打开的excel文件写数据导致文件被清空

使用Apache POI尝试向已打开的Excel文件写入数据时,发现文件被清空。问题在于POI的工作簿与缓存中的文件内容关联。解决方法是通过FileInputStream打开文件,使POI与缓存内容交互,而非直接操作原始文件。
摘要由CSDN通过智能技术生成

概述

最近在做项目的时候遇到了使用Java调用POI读写Excel的问题,再向一个已经打开的文件写入修改好的数据的时候,源文件被复写为空文件。这个问题涉及到POI读写文件的原理,故在此记录一下,以备日后回顾。

问题程序


//读数据表
Workbook wb = WorkbookFactory.create(new File(sourcePath));
Sheet table = wb.getSheetAt(0);
//写数据表
FileOutputStream fOut = null;
try {
File file = new File(targetFile);
if(!file.exists()){
file.getParentFile().mkdirs();
file.createNewFile();
}
fOut = new FileOutputStream(file);
wb.write(fOut);
fOut.flush();
fOut.close();
wb.close();
} catch (FileNotFoundException e) {
e.printStackTrace(System.out);
} catch (IOException e) {
e.printStackTrace(System.out);
}

测试结果

采用上述程序读写统一Excel文件时会产生问题,也就是无法通过该种方式来修改Excel文件。

问题分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值