我目前正在编写一个输出到 excel 文件的程序。(同开的上面写着)我有一种感觉,用户会在 excel 中打开文件,然后再在我的应用程序中修改。虽然我确实意识到我可以保存一个不那么整洁的新文件。
我正在寻找一种从Excel解锁文件或强制写入文件的方法,你能帮忙吗?
我最终需要一种在 Excel 中打开文件并且仍然能够从 java 写入文件的方法。
谢谢!
编辑:
为了回答我为什么要解锁文件的问题,我正在处理的程序没有内置的 excel 查看器,只有基于标准化输入进行更新的能力。
因此,用户仍将在 excel 中查看该文件。如果他们需要先打开这个程序,那也没关系。
我想另一种选择是如何在 Excel 仍然可以读取文件时以写入权限打开文件?
目前打开时我正在使用Apache POI HSSF/XSSF,一旦我的程序打开文件,如果我尝试在excel中打开它,我会收到以下错误:"Excel无法打开文件,因为文件格式无效。验证文件是否未损坏,以及文件扩展名是否与文件格式匹配。
文件被锁定是有充分理由的。试着从excel程序员的恭敬中思考问题。如果您编写了一个锁定文件的程序,则希望独占访问该文件,因为必须确保同时不会修改该文件。
因此,即使您可以解锁它,也可能导致 excel 或通常其他程序崩溃,因为它可能会以不一致的状态读取文件。
我建议您查看文件是否被锁定,如果通知用户您要更新的文件已在另一个程序中打开。用户应先关闭此程序,然后程序才能继续。
在创建 Excel 文件之前将文件可写设置为 true,然后在创建 Excel 文件后将文件设置为只读,如下所示:
try{
File file = new File("*path*");
file.setWritable(true);
OutputStream out = new FileOutputStream(file.getPath());
HSSFWorkbook wb=new HSSFWorkbook();
//Create Excel File
wb.write(out);
out.close();
file.setReadOnly();
}catch (FileNotFoundException e){
e.printStackTrace();
}
必须将文件设置为只读,以便 java 程序在文件打开时写入文件