Fermer Filehandle for Workbook (apache poi)
Je construit un nouveau Classeur à l'aide de WorkbookFactory.create(new File("path/to/xlsx"))
. Cependant, lorsque j'essaie de modifier le Fichier dans Excel après le démarrage de l'application, j'obtiens un message d'erreur indiquant que le fichier est en cours d'utilisation. Dois-je gratuit le fichier, et si oui, comment? (Je ne pouvais pas trouver quelque chose comme Workbook.close()
dans l'api docs) Ou dois-je rechercher dans d'autres endroits?
Je n'ai aucune idée de où d'autre à regarder; la demande n'est pas la cause de ces problèmes avec les csv et pour les fichiers excel, j'ai simplement appeler le convertisseur (xls => csv), qui est la seule différence.
(Je suis à l'aide de POI 3.8)
source d'informationauteur ted
Vous devez vous connecter pour publier un commentaire.
Si vous avez besoin d'un contrôle total lorsque les ressources fermé, vous devez créer le OPCPackage vous-même à l'avant, et le passer dans WorkbookFactory. OPCPackage fournit la méthode close vous êtes après. Un Classeur restera ouvert jusqu'à ce que la collecte des ordures
Votre code devrait ressembler à quelque chose comme:
Il semble très bien fonctionner pour maintenir une poignée sur le InputStream passé à
WorkbookFactory.create()
et tout simplement de fermer la InputStream lorsque vous avez terminé avec le Classeur. Par exemple:Comment fermer une instance d'un POI classeur en Java:
Vous devez d'abord fermer le flux de données qui est écrit dans le classeur:
Après que u doit fermer le classeur (pas d'activités) et éliminer les fichiers temporaires: