[POI] Manipuler fichier .docx
Bonjour à tous,
je souhaite ajouter un fichier XML de données (fichier personnalisé) à mon fichier .docx
Je suis presque arrivé à faire ce que je voulais, mais je rencontre un dernier (enfin j'espère :)).
En parcourant plusieurs sites, j'ai fini par comprendre qu'il fallait ajouter (notamment) le fichier /customXml/item1.xml et le /customXml/itemProps1.xml
Pour ajouter le fichier /customXml/item1.xml qui contient mes données, j'ai procédé comme ceci
Code:
1 2 3 4 5 6 7 8 9 10
| private static void addCustomXmlPart(OPCPackage opcPackage, String xml)
throws IOException, InvalidFormatException, org.apache.poi.openxml4j.exceptions.InvalidFormatException {
PackagePartName partName = PackagingURIHelper.createPartName("/customXml/item1.xml");
opcPackage.getParts();
PackagePart part = opcPackage.createPart(partName, ContentTypes.CUSTOM_XML_PART);
OutputStream outputStream = part.getOutputStream();
outputStream.write(xml.getBytes());
outputStream.close();
part.addRelationship(partName, TargetMode.INTERNAL, PackageRelationshipTypes.CUSTOM_XML);
} |
Le fichier /customXml/itemProps1.xml doit être de la forme suivante
Code:
1 2
| <?xml version="1.0" encoding="UTF-8" standalone="true"?>
<ns1:datastoreItem ns1:itemID="{43c3fce5-a408-416d-b13f-3a332456c532}" xmlns:ns1="http://schemas.openxmlformats.org/officeDocument/2006/customXml"/> |
Le problème, c'est que je ne trouve pas de méthode dans POI pour générer la clé unique (datastoreItem)
J'ai trouvé des sites qui expliquent comment faire avec doc4j
Code:
1 2 3
| CustomXmlDataStoragePropertiesPart part = new CustomXmlDataStoragePropertiesPart();
org.docx4j.customXmlProperties.ObjectFactory of = new org.docx4j.customXmlProperties.ObjectFactory();
DatastoreItem dsi = of.createDatastoreItem(); |
Mais avec POI, comment doit-on faire ?
D'avance merci.