1

我目前正在编写一个输出到 excel 文件的程序。(它读取的相同打开)我有一种感觉,用户会在我的应用程序中修改之前在 excel 中打开文件。虽然我确实意识到我可以保存一个不那么整洁的新文件。

我正在寻找一种从 Excel 解锁文件或强制写入文件的方法,您能帮忙吗?

我最终需要一种在 Excel 中打开文件的方式,并且仍然能够从 java 写入文件。

谢谢!

编辑:

为了回答我为什么要解锁文件的问题,我正在处理的程序没有内置 excel 查看器,只有基于标准化输入的更新能力。

因此,用户仍将在 excel 中查看文件。如果他们需要先打开这个程序,那也没关系。

我想另一种选择是如何在 Excel 仍然可以读取的情况下以写入权限打开文件?

目前打开时我使用的是 Apache POI HSSF/XSSF,一旦我的程序打开文件,如果我尝试在 excel 中打开它,我会收到以下错误:“Excel 无法打开文件,因为文件格式无效。验证文件未损坏且文件扩展名与文件格式匹配。

4

2 回答 2

2

文件被锁定是有充分理由的。试着从excel程序员的角度去思考问题。如果您编写一个锁定文件的程序,您希望对它进行独占访问,因为您必须确保同时该文件没有被修改。

因此,即使您可以解锁它,您也可能会导致 excel 或其他程序崩溃,因为它可能会以不一致的状态读取文件。

我建议您查看文件是否被锁定,如果被锁定,请通知用户您要更新的文件已在另一个程序中打开。用户应先关闭此程序,然后您的程序才能继续。

于 2013-09-16T08:53:10.760 回答
1

在创建 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 程序在文件打开时写入文件

于 2014-09-29T15:58:22.340 回答