2017-03-10 3 views
0

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

1

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

+0

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. –

+0

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 –

+0

Wenn Sie das gerade gelesene XML in das Dokument schreiben, sehen Sie nur den Absatz. –

Verwandte Themen