2017-03-10 2 views
0

Word JavaScript APIを使用してOffice Word 2016のアドインを構築しています。それは私が必要とする文書の制御レベルを提供しないので、私は文書のOOXMLを直接変更してこれを達成しようとしています。ユーザーは任意の数のページを持つドキュメントを持つことができるので、これが正しい方法であるかどうかはわかりません。ドキュメントの一部だけを抽出してそれを元に戻すなど、簡単にする方法があるかどうかを知りたいと思います。ファイルのOffice Open XML表現を変更して単語文書の内容を変更する方法はありますか?

答えて

1

私はAPIの中で期待しているコントロールのレベルを知りたいと思っています。潜在的なギャップについて詳細を分かち合うことができるのだろうか?

今、あなたの質問に答えてください:絶対に!私たちはOOXMLを介して文書を操作します。これは非常に強力なツールですが、複雑になる可能性はありますがWordMLに精通しているようですが、Win32やMac以外のプラットフォーム(Word Online XML注入はsloooooooow)で遅くなることがあります。

あなたが必要としていることを達成するための鍵は、範囲を得ることです(私が言及した "文書の部分を抽出する"より詳細な基準が必要ですが、 。いったんそれを持っていれば、range.insertOoxml( "あなたのOOXML"、 "置き換える")を実際に行うことができます。

APIでさまざまな方法で範囲を取得できます。たとえば、検索メソッドは一連の範囲を返します。すべてのオブジェクトには、このために使用できる.getRange()メソッドがあります。

次の例では、ドキュメントの最初の段落の最初の単語を、指定された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)})

これは正しい方向にあなたを設定します願っています。 Btw、here is a useful article about ooxml and word.js

+0

ありがとうございました。私はまだ有効なOOXML文字列がどのようなものかを理解するのに苦労しています。私が範囲を取得してそのOOXMLを印刷するたびに、私は期待している範囲のOOXMLだけでなく、ドキュメント全体のOOXMLを取得しています。 'var paragraph = context.document.body.paragraphs.getFirst(); paragraph.load(); var paragraphooxml = paragraph.getOoxml(); return(0) console.log(paragraphooxml.value); }); これは、最初の段落だけでなく、ドキュメント全体に対してOOXMLを出力します。 –

+0

はい私は記事を読んでください、可能な限り少ないXMLを生成する方法について話します。https://github.com/OfficeDev/office-js-docs/blob/master/docs/word/create-better-add -ins-for-word-with-office-open-xml.md –

+0

あなたがちょうどパラグラフが表示されるドキュメントに戻って読んだXMLを書くならば。 –

関連する問題