在java中,如何解锁文件或写入excel打开的文件

在java中,如何解锁文件或写入excel打开的文件,java,file,fileoutputstream,filelock,Java,File,Fileoutputstream,Filelock,我目前正在编写一个程序,输出到excel文件。(和上面写的一样) 我有一种感觉,在我的应用程序中修改之前,用户将在excel中打开该文件。 虽然我意识到我可以保存一个不那么整洁的新文件 我正在寻找一种从Excel解锁文件或强制写入文件的方法,您能帮忙吗? 我需要一种在Excel中打开文件的方法,并且仍然能够从java写入文件 谢谢大家! 编辑: 为了回答我为什么要解锁该文件的问题,我正在使用的程序没有内置excel查看器,只有基于标准化输入进行更新的功能 因此,用户仍将在excel中查看该文件。

我目前正在编写一个程序,输出到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程序在文件打开时写入文件

您想要解锁文件的原因是开始提问的一个好方法。操作系统不允许这样做。在Java中,您对此无能为力。