Comment modifier un fichier PPTX via Java alors qu'il est ouvert dans Microsoft PowerPoint?


En référence à POI - Impossible d'écrire dans un fichier lorsqu'il est ouvert dans Excel?

La fonctionnalité requise pour mon application Java en cours de développement est la version PowerPoint de ce qui précède: à l'aide de Java, créez une diapositive et ajoutez du contenu généré à partir des données d'application capturées, puis ajoutez la diapositive à un fichier PowerPoint existant actuellement ouvert dans Microsoft PowerPoint.

Si aucun fichier PowerPoint n'est ouvert, l'application Java s'ouvrira d'abord Microsoft PowerPoint si nécessaire, créez un nouveau fichier PowerPoint vide, puis ouvrez-le dans Microsoft PowerPoint.

, Par exemple, mon application va créer Test.pptx. L'application l'ouvrira ensuite dans l'application Microsoft PowerPoint. Ensuite, j'ajoute la diapositive. L'opération réussit et aucune exception n'est levée. Cependant, les modifications ne sont pas reflétées dans la vue Microsoft PowerPoint.

  • Si je ferme le fichier dans Microsoft PowerPoint et l'ouvre à nouveau, la mise à jour les changements peuvent être vus. Cependant, ce n'est pas ce que je veux. L'utilisateur doit pouvoir ajouter continuellement de nouvelles diapositives et voir ces diapositives se mettre à jour dans la vue Microsoft PowerPoint à la volée sans avoir besoin de redémarrer l'application Microsoft PowerPoint après chaque ajout de diapositives.
  • J'ai remarqué que lorsque le fichier PowerPoint est ouvert dans Microsoft PowerPoint, un fichier temporaire ~$Test.pptx est créé sur mon bureau. J'ai essayé d'obtenir mon application Java pour ajouter directement les diapositives générées dans ~Test.pptx, mais FileNotFoundException: the process cannot access the file because it is being used by another process. est ensuite levée.

L'application est implémentée à l'aide de Java 1.8, fonctionne sous Windows 10 et utilise Microsoft Office 2013. Le développement de cette caractéristique particulière vient de commencer à partir de zéro, de sorte que des solutions sont toujours recherchées et explorées.

À l'heure actuelle, nous utilisons Apache POI mais nous pouvons arrêter de l'utiliser si cela signifie résoudre le problème. Il a été suggéré d'essayer d'utiliser des macros Microsoft Office. Cette idée est toujours explorée comme nous ne le faisons pas comprendre comment utiliser suffisamment les macros pour déterminer si elles répondent adéquatement à nos exigences.

Comment puis-je implémenter les fonctionnalités requises? De quelles technologies ou bibliothèques aurais-je besoin pour faire le travail?

Exemple de code tiré du tutoriel Apache POI PPT de TutorialsPoint. Le fichier PowerPoint existant doit déjà être ouvert dans Microsoft PowerPoint, et lorsque le code ci-dessous est exécuté, j'ai besoin de voir les diapositives ajoutées dans la vue Microsoft PowerPoint immédiatement. Rappel: L'utilisation d'Apache POI n'est pas obligatoire.

public class EditPresentation {
  public static void main(String ar[]) throws IOException{
    //opening an existing slide show
    File file = new File("example1.pptx");
    FileInputStream inputstream=new FileInputStream(file);
    XMLSlideShow ppt = new XMLSlideShow(inputstream);

    //adding slides to the slodeshow
    XSLFSlide slide1 = ppt.createSlide();
    XSLFSlide slide2 = ppt.createSlide();

    //saving the changes 
    FileOutputStream out = new FileOutputStream(file);
    ppt.write(out);

    System.out.println("Presentation edited successfully");
    out.close();    
  }
} 
Author: Community, 2016-11-10