Fehler beim PPT-Datei zu öffnen, die von Apache POI
Ich erzeuge eine Powerpoint-Präsentation Apache POI mit - XSLF, on the fly, wenn der Benutzer einen bestimmten Link auf meiner Website klickt. Ich habe ein paar Tabellen mit Daten zu meiner Präsentationsdatei und auch ein Bild (Liniendiagramm), das mit jfreechart erstellt wurde. Wenn ich den PPTX auf meinem Computer öffne, scheint es gut zu funktionieren. Wenn ich die Datei auf einem anderen Computer mit Powerpoint 2013 öffne, erhalte ich den folgenden Fehler.
"Powerpoint hat ein Problem mit dem Inhalt gefunden Powerpoint kann versuchen, die Präsentation zu reparieren".
Ich möchte diesen Fehler loswerden. Ich habe im Internet gelesen, dass die Lösung darin besteht, den Powerpoint zu "entblocken", was über den Eigenschaftsbereich der Datei geschehen kann. Ich frage mich, ob ich programmgesteuert etwas tun kann, um diese Fehler für meine Benutzer zu unterdrücken. Diese Fehlermeldung ist zumindest ärgerlich.
Mein letzter Thread auf diesem gelöscht - https://stackoverflow.com/questions/41163148/how-to-unblock-pptx-using-apache-poi
daher neu zu erstellen, diesen Thread hier wieder. Ein Fehler wird auch in Bugzilla für Apache POI eingegeben. Fehler-ID - 60633 (https://bz.apache.org/bugzilla/show_bug.cgi?id=60633).
XSLFTableCell cell
XSLFTextParagraph p
XSLFTextRun line
XSLFTable tbl = slide.createTable();
tbl.setAnchor(new Rectangle(X, Y, WIDTH, HEIGHT));
XSLFTableRow headerRow = tbl.addRow();
headerRow.setHeight(45);
//Loop through the data collection and populate rows and columns.
for(int i = 0; i < numberOfCols; i++) {
XSLFTableCell th = headerRow.addCell();
p = th.addNewTextParagraph();
p.setTextAlign(TextAlign.CENTER);
line = p.addNewTextRun();.....}
for (int item=0; item < 8; item++)
{
XSLFTableRow itemRow = tbl.addRow();.....}
//finally write the file
File pptFile = File.createTempFile("fileName", ".ppt")
FileOutputStream out = new FileOutputStream(pptFile)
ppt.write(out)
out.close()
Was seit Ihrer letzten Frage wurde gelöscht hat sich geändert? Die Lösung für eine gelöschte Frage besteht nicht darin, sie blindlings neu zu veröffentlichen ... – Gagravarr
Ich glaube nicht, dass Sie auf dem richtigen Weg sind. Der Fehler sagt klar, dass der Code, den Sie verwenden, etwas falsch macht. Und es wird es sogar weiter erklären, wenn Sie sich die Reparaturschritte ansehen. Also zuerst genau das, was repariert werden muss, während Sie den Reparaturprozess beobachten und dann Ihren Code anschauen, was zu diesen Problemen führen könnte. –
@Gagravarr Ich konnte dieses Problem nicht lösen, und ich habe einen Fehler mit Apache-Poi geöffnet und Fehlerdetails mit diesem Thread hinzugefügt. Ich verstehe völlig, dass "blindes" Umladen nicht hilft. Bitte seien Sie versichert, dass dies nicht der Fall ist. Ich habe diesen Thread neu gestartet, so dass 1. Jemand, der identifizieren kann, was ich falsch mache, könnte helfen 2. Jeder, der die Lösung nicht kennt, kann davon profitieren. – JavaProgrammer