3

私はウェブサイトで新しいです。開いている間にExcelファイルに書き込もうとしています(POI / JAVAを使用)。

java.io.FileNotFoundExceptionファイル出力ストリームを作成してファイルに書き込もうとすると、エラーが発生しました。

FileOutputStreamうまくいきませんでした。次のメッセージが表示されます。

別のプロセスによって使用されているため、プロセスはファイルにアクセスできません。

         try {
           FileOutputStream fileOut;
           XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream("Classeur.xlsm")); 
           ...
           ...
           fileOut = new FileOutputStream("Classeur.xlsm");
           wb.write(fileOut);
           fileOut.close();
           }
        catch (FileNotFoundException e){
           e.printStackTrace();
           } 
        catch (IOException e) {
           e.printStackTrace();
           }

どうすれば修正できるか知っている人はいますか?Excelファイルを動的に読み書きする(POI-Java-Swing)アプリケーションを書いています。

ご協力いただきありがとうございます

4

5 に答える 5

4

Windows 自体では、これを行うことはできません。残念ながら、あなたのコードにはそれを可能にするものは何もありません。最初に Excel でファイルを閉じる必要があります。

編集 - あなたの説明から、ファイルを自分で Excel で開いていると思います。そうではないかもしれません。ただし、他の何かが確実に実行されます。たとえば、Java アプリケーションの別のインスタンスである可能性があります。たとえば、属性を確認するために、Windows Explorer などのものがファイルにアクセス/使用していないことを確認してください。前述のように、それを除外するまで、Windows 自体がアクセスをブロックします。

于 2012-10-17T16:09:13.817 に答える
3

書き込もうとしている正確なExcel ファイルにアクセスしている別のプロセスがどこかで実行されています。ファイルをロックしている Excel アプリケーション (Microsoft Excel など) が実行されていないか、または同じファイルを既にロックしている Java プロセスがないかどうかを確認してください。

于 2012-10-17T16:09:36.140 に答える
1

ファイルが開いている場合は、java.io.FileNotFoundException. そのため、ファイルを書き込む前にチェックする必要があります。

例 :

File file = new File("workbook.xls");
if(file.canWrite()) {
    System.out.println("File is open");
} else {
    FileOutputStream fileOut = new FileOutputStream(file);
    wb.write(fileOut);
    fileOut.close();
}
于 2012-10-17T16:12:39.023 に答える
0

これがうまくいくかどうかはわかりませんが、試してみるべきだと思います。

私があなたがしているのと同じようなことをしていたとき、私はExcelの数式が例えばのような別のExcelファイルのセルを参照できることを学びました

='D:\excelfiles\[Book1.xlsx]Sheet1'!$A$1

では、Book1.xlsx(例外が発生しないように閉じられている)のような別のファイルを更新して、開いたファイルにBook1.xlsx内のセルの場所を参照させてみませんか。

さて、私はここで多くの反対票を期待していますが、試してみる価値があると思います:)

于 2012-10-19T18:49:17.987 に答える
0

I can't delete a file in Javaトピックで説明されている同様の問題。問題を解決するための正しい方法を見つけるのに役立つかもしれません。

于 2012-10-17T16:09:27.560 に答える