Ich erstelle ein Add-In für Office Word 2016 mithilfe der Word-JavaScript-API. Da es nicht die Kontrolle über das Dokument bietet, die ich benötige, versuche ich dies zu erreichen, indem ich direkt die OOXML des Dokuments ändere. Da der Benutzer ein Dokument mit einer beliebigen Anzahl von Seiten haben kann, bin ich nicht sicher, ob dies der richtige Weg ist. Ich möchte wissen, ob es irgendeinen Weg gibt, dies zu vereinfachen, wie nur Teile des Dokuments zu extrahieren und es wieder einzufügen.Wie ändert man den Inhalt eines Word-Dokuments durch Ändern der Office Open XML-Darstellung der Datei?
Antwort
Große Frage, für Anfänger Ich bin gespannt auf das Niveau der Kontrolle, die Sie in der API erwarten, ich frage mich, ob Sie mehr Details über mögliche Lücken teilen können (Danke im Voraus!).
Jetzt, um auf Ihre Frage zu antworten: absolut! Wir öffnen die Tür über OOXML, um mit dem Dokument zu interagieren. Dies ist ein sehr mächtiges Werkzeug, wenn auch möglicherweise kompliziert (aber scheint, Sie sind Kenntnisse von WordML) und es kann langsam sein, speziell in anderen Plattformen als Win32 oder Mac (Word Online XML-Injektion ist sloooooooow).
Der Schlüssel, um zu erreichen, was Sie brauchen, ist, dass Sie einen Bereich bekommen (ich würde ein Kriterium detaillierter auf die "extrahieren Teile des Dokuments" Sie erwähnt haben, aber am Ende des Tages über einen Bereich) . Sobald Sie es haben, können Sie tatsächlich eine range.insertOoxml ("Ihre OOXML", "ersetzen"), um diesen Bereich mit was auch immer OOXML haben Sie zu ersetzen.
Sie können einen Bereich auf viele verschiedene Arten in der API erhalten. Zum Beispiel gibt die Suchmethode eine Sammlung von Bereichen zurück. Alle Objekte verfügen über eine .getRange() -Methode, die Sie dafür verwenden können.
Das folgende Beispiel ersetzt das erste Wort des ersten Absatzes im Dokument durch ein gegebenes OOXML.
Word.run(function (ctx) {
var myTempOOXML = "get some valid OOXML!"
ctx.document.body.paragraphs.getFirst().split([" "],false,false,false).getFirst().insertOoxml(myTempOOXML, "replace");
return ctx.sync();
}).catch(function (e) { app.showNotification(e.message)})
Hope this setzt Sie in die richtige Richtung nach oben. Btw, here is a useful article about ooxml and word.js
- 1. Ändern Sie den Inhalt der py-Datei
- 2. Wie ändert man den Inhalt der WebRTC MediaStream Videospur?
- 3. Wie ändert man den Python-Modul-Inhalt?
- 4. Erhalten Sie Inhalt von Open Office-Dokument
- 5. Wie ändert man den Kind-Inhalt eines div?
- 6. Wie ändert man den Text eines BarButtonItem in der NavigationBar?
- 7. Wie ändert man den zentralen Meridian der Weltkarte JSON-Datei?
- 8. Wie ändert man den Text eines TextView in der Navigationsleiste?
- 9. Wie ändert man den Namen der tabcontrol
- 10. Wie ändert man den Stil der Bildlaufleiste?
- 11. So ändern Sie den Inhalt eines ContentControls
- 12. Wie ändert man den Einstiegspunkt der EXE-Datei?
- 13. VMS EDT - Wie wählt man den kompletten Inhalt der Datei?
- 14. Wie ermittelt man den MIME-Typ der Datei nach Inhalt?
- 15. Wie konvertiert man den Inhalt der. Tmp-Datei in png
- 16. Auslösen eines Ereignisses, wenn sich der Inhalt der Zwischenablage ändert
- 17. Excel, wie man den Wert der Ausgabe ändert, indem man den Wert der Eingabe
- 18. Ändern der Schriftgröße eines NSButton ändert nichts
- 19. Wie ändert man den Namen der Meteorebenutzersammlung?
- 20. Wie wird der Inhalt einer Seite durch einen iframe ersetzt, der den Inhalt der Seite enthält?
- 21. , wie den Inhalt der Zweig-Datei erhalten
- 22. wie Sie durch jedes Zeichen in Open Office navigieren
- 23. Ändern Sie den Inhalt eines Android-Dialogfelds nach der Erstellung
- 24. Wie ändert man den Text auf den Schaltflächen der MessageBox?
- 25. Wie ändert man den Ausgabepuffer?
- 26. Wie ändert man die Stilgröße eines Canvas dynamisch durch JavaScript?
- 27. Wie ändert man den Inhalt einer JavaScript-Funktion dynamisch?
- 28. Open Office Base Datetime Standard
- 29. DNN menu control - Wie ändert man den Inhalt? Dotnetnuke
- 30. Wie ändert man den Inhalt des malloc.c Headers?
Danke für die Antwort. Es fällt mir immer noch schwer herauszufinden, wie eine gültige OOXML-Zeichenfolge aussieht. Jedes Mal, wenn ich einen Bereich erhalte und seine OOXML ausdrucke, erhalte ich die OOXML für das gesamte Dokument und nicht nur die OOXML für den Bereich, den ich erwarte. 'var Absatz = context.document.body.paragios.getFirst(); paragraph.load(); var absatzooxml = paragraph.getOoxml(); Rückgabe context.sync(). Dann (function() { console.log (paragioxxml.value); }); ' Dies druckt OOXML für das gesamte Dokument und nicht nur für den ersten Absatz. –
ja bitte lesen Sie den Artikel ich fwd, es spricht darüber, wie man so wenig wortreich wie möglich XML generieren https://github.com/OfficeDev/office-js-docs/blob/master/docs/word/create-better-add -ins-for-word-with-office-open-xml.md –
Wenn Sie das gerade gelesene XML in das Dokument schreiben, sehen Sie nur den Absatz. –