Tiens un autre tip Apache POI...
par
, 13/12/2016 à 02h05 (946 Affichages)
C'est une feature ce coup-ci, mais pas documentée, au sujet des Hyperlink de type fichier (HyperlinkType.FILE). On trouve bien un exemple, mais le lien est un nom simple. J'ai dû chercher pendant un moment avant de comprendre comment faire pour indiquer un chemin relatif (au fichier Excel) obtenu à partir d'une variable de type Path (ou File, éventuellement) ?
On serait tenté d'écrire, avec une variable path de type Path, contenant un chemin relatif :
Et ça ne fonctionnerait pas sur Windows... on obtiendrait une exception d'URI malformée. Parce que s'il y a des antislashes dans l'adresse, POI considère le chemin comme étant celui d'une URI, et utilise la classe URI pour le vérifier, d'où l'exception.
Code : Sélectionner tout - Visualiser dans une fenêtre à part hyperlink.setAdresse(path.toString());
Pour un chemi absolu, on peut écrire :
Mais évidemment, pour un chemin relatif, cela ne fonctionne pas (enfin si, mais ça fait la résolution du chemin absolu par rapport au chemin par défaut, et donc pas forcément avec le chemin du fichier Excel), et on obtient donc un lien absolu. Il suffit de remplacer les antislashes par des slashes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part hyperlink.setAdress(path.toUri().toString());
et hop, un chemin relatif...
Code : Sélectionner tout - Visualiser dans une fenêtre à part hyperlink.setAdress(path.toString().replace('\\','/');