我目前正在编写一个输出到excel文件的程序。 (同样打开它读) 我觉得用户将在excel中打开文件,然后在我的应用程序中进行修改。 虽然我确实知道我可以保存一个不那么整洁的新文件。
我正在寻找一种从Excel解锁文件或强制写入文件的方法,请你帮忙吗?
我需要最终在Excel中打开文件的方式,并且仍然能够从java写入文件。
谢谢!
编辑:
要回答我为什么要解锁文件的问题,我正在处理的程序没有内置的excel查看器,只能基于标准化输入进行更新。
因此用户仍将在excel中查看该文件。 如果他们需要先打开这个程序,那也没关系。
我想另一个选择是如何打开具有写访问权限的文件,而Excel仍然可以读取它?
目前打开时我正在使用Apache POI HSSF / XSSF,一旦我的程序打开文件,如果我尝试在excel中打开它,我会收到以下错误:“Excel无法打开文件,因为文件格式无效。验证文件是否已损坏,以及文件扩展名是否与文件格式匹配。
答案 0 :(得分:2)
文件锁定的理由很充分。试着从excel程序员的角度考虑问题。如果你编写一个锁定文件的程序,你想要对它进行独占访问,因为你必须确保同时不修改该文件。
因此,即使您可以解锁它,也可能导致excel,或者通常其他程序崩溃,因为它可能会以不一致的状态读取文件。
我建议您查看文件是否已锁定,如果是,请通知用户您要更新的文件在另一个程序中打开。用户应该在程序继续之前关闭此程序。
答案 1 :(得分:1)
在创建excel文件之前将文件写入为true,然后在创建excel文件时将文件设置为readonly:
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();
}
文件必须设置为readonly才能让java程序在文件打开时写入文件