在java中,如何解锁文件或写入excel打开的文件
我目前正在编写一个程序,输出到excel文件。(和上面写的一样) 我有一种感觉,在我的应用程序中修改之前,用户将在excel中打开该文件。 虽然我意识到我可以保存一个不那么整洁的新文件 我正在寻找一种从Excel解锁文件或强制写入文件的方法,您能帮忙吗? 我需要一种在Excel中打开文件的方法,并且仍然能够从java写入文件 谢谢大家! 编辑: 为了回答我为什么要解锁该文件的问题,我正在使用的程序没有内置excel查看器,只有基于标准化输入进行更新的功能 因此,用户仍将在excel中查看该文件。 如果他们需要先打开这个程序,也可以 我想另一个选择是如何在Excel仍然可以读取文件的情况下使用写访问权限打开文件在java中,如何解锁文件或写入excel打开的文件,java,file,fileoutputstream,filelock,Java,File,Fileoutputstream,Filelock,我目前正在编写一个程序,输出到excel文件。(和上面写的一样) 我有一种感觉,在我的应用程序中修改之前,用户将在excel中打开该文件。 虽然我意识到我可以保存一个不那么整洁的新文件 我正在寻找一种从Excel解锁文件或强制写入文件的方法,您能帮忙吗? 我需要一种在Excel中打开文件的方法,并且仍然能够从java写入文件 谢谢大家! 编辑: 为了回答我为什么要解锁该文件的问题,我正在使用的程序没有内置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程序在文件打开时写入文件您想要解锁文件的原因是开始提问的一个好方法。操作系统不允许这样做。在Java中,您对此无能为力。