SDKを使用して、レポートを含むWord文書を作成しています。これらの文書にはTOCが必要です。 誰かがこれを行う方法を理解するために私が従うことができる完全な解決策を持っていますか? (私はhttp://openxmldeveloper.org/上のすべてを読んだ)OpenXML SDK 2.0を使用して目次を生成する方法は?
答えて
はエリック・ホワイトによってFourth and Final Screen-Cast in Series on Adding/Updating the TOC in OpenXML WordprocessingML Documentsを見てください。
希望に役立ちます!
UPDATE:私はこの機能がサポートされていないことがわかりMSDNフォーラムから
8)Word文書にTOC(目次)を生成する方法は?
Open XML SDK 2.0では、この機能がサポートされていません。しかし、 小さなTOCをWordアプリケーションで生成し、 TOCをプログラムで生成する方法を確認するには、Open XML SDK生産性ツールのReflectorコンポーネントのドキュメント でTOC部分を反映させることができます。より詳細な情報については、 はを参照してください。
私は、このシナリオを使用することを提案することができ、以下の私たちのコメントに基づいてUPDATE 2
:
- 手動で空のDOCXファイルを作成し、TOCを挿入その中。
- 次に、このファイルを保存し、TOCプレースホルダを含む空のファイルを生成するためのC#コードを提供するOpenXML SDK 2.0ツールで開きます。
- 次に、このDOCXファイルに必要なすべてのデータをプログラムによってフラッシュして保存します。
- さらに、データがフラッシュされると(またはドキュメントが開かれた後に)TOCを自動更新するメカニズムを提供する必要があります。これを行うにはいくつかの選択肢があります - 上で提供したEric Whiteへのリンクからのスクリーンキャスト3-5を参照してください。特に、私は5th oneに注意を払う必要があると思います - "TOCを含むドキュメントが開かれたときにAutoOpenマクロを使用してTOCを更新する方法を示します"。
これらのすべてはややこしく見えますが、私はそれが役立つことを願っています。
Dmitri Pavlov(@DmitryPavlov)のおかげです。
私自身の質問に答えたいとは思わないが、これは私が取った手順を説明するためのものです。
興味がある人のためのアドバイスは、エリックホワイト()の5つの部分からなるスクリーンキャストを見ることです。これは目次の追加と更新に関するすべての情報を持っています(これ以上)。
私の解決策はテンプレート(必要なものすべてのスタイル(ヘッダー1-5、TOCスタイルなど)を持っていたちょうど普通の空のドキュメント)を使用することでした。これは、スタイルの問題をすばやく解決するために特に便利です(TOCを持つ新しい文書には新しいstyle.xmlが作成されますが、このファイルにはいくつかの追加データが含まれているためTOCの階層はヘッダー2はヘッダー1の子、ヘッダー3はヘッダー2の子などです)。したがって
:
- は、Word文書を作成し、後でプログラムで追加されることを期待するすべての要素を追加します(例えば、ヘッダ1-5、目次など)。すべての内容を削除して文書を保存します(必要なすべての要素のスタイルを作成する理由)。
個人的に私のプロジェクトのリソースとしてテンプレート(ステップ1で作成したファイル)を追加しました。
コードで、テンプレートの新しいコピーを作成します(これが実際に作業するファイルになります)。私は使用しました:
byte[] stream = Properties.Resources.Template; File.WriteAllBytes(@"D:\Template.docx", stream); File.Copy(@"D:\Template.docx", @"D:\New.docx");
すべてのデータをこのドキュメントにフラッシュします。
は(このためにスクリーンキャスト3を参照してください)スクリーンキャスト2、3または4からプロジェクトにソースファイルを追加します - これらの記事の最後に、あなたはTocAdder.zipをダウンロードするためのリンクがあります。または、TocAdder.dllへの参照を追加するだけです。
TOCを挿入します。例:
using (WordprocessingDocument wdoc = WordprocessingDocument.Open(@"D:\New.docx", true)) { XElement firstPara = wdoc .MainDocumentPart .GetXDocument() .Descendants(W.p) .FirstOrDefault(); TocAdder.AddToc(wdoc, firstPara, @"TOC \o '1-3' \h \z \u", null, null); }
新しく作成されたドキュメントのスタイルをテンプレートのスタイルに置き換えます。 MSDNのReplacing the Styles Parts in Word 2010 Documents by Using the Open XML SDK 2.0からこのリソースを使用できます。ここでも、例:
string fromDoc = @"D:\Template.docx"; string toDoc = @"D:\New.docx"; var node = WDExtractStyles(fromDoc, false); if (node != null) WDReplaceStyles(toDoc, node, false); node = WDExtractStyles(fromDoc); if (node != null) WDReplaceStyles(toDoc, node);
は、必要に応じてWordがアップしますモーダルダイアログボックスで問題を回避するために、スクリーンキャスト3、4または5に記載の方法のいずれかを使用します。
これは誰かにとって役に立ちます。
ファイルではなくストリームで作業しているときにモーダルダイアログボックスを削除することはできますか?私はmemorystreamを使用してドキュメントを生成しているので、ダウンロードのためにユーザーに提供します。今度は、このモーダルダイアログを避ける方法が見つからないので、目次を更新するには[はい]をクリックする必要があります。 –
- 1. OpenXml sdk 2.0でExcel文書を作成
- 2. Kinect SDKを使用して目を追跡する方法は?
- 3. OpenXML Sdkを使用して段落のテキストを置き換える方法
- 4. Openxml sdk。
- 5. OpenXML SDKを使用したExcelスプレッドシートでのセルコメントの作成
- 6. OpenXML SDK 2.0 XMLパーツと要素を列挙します
- 7. OpenXML SDKスプレッドシートスターターキット
- 8. ADTを使用してJavadocを生成する方法r17
- 9. PHP SDKを使用してfqlマルチクエリを作成する方法
- 10. Openxml 2.0 xml処理
- 11. OpenXmlからPDFを生成
- 12. マージフィールドをOpenXML SDK 2.0のテキストに置き換えます
- 13. loadUIを使用して負荷を生成する方法は?
- 14. LLVMを使用してコールグラフを生成する方法は?
- 15. DataImportHandlerを使用してIdを生成する方法は?
- 16. TFS- java sdkを使用して作業項目データを取得する方法
- 17. OpenXML SDKを使用してExcelでセルを選択および編集する
- 18. NSFetchedResultsControllerを使用して順次フィルタを作成する方法
- 19. OpenXML SDKを使用してOpenXMLドキュメントを別のドキュメントに埋め込むことはできません
- 20. OpenXML C#を使用してExcelでシートを非表示にする方法は?
- 21. JSF 2.0 + Faceletsを使用してプリンシパルをプリントする方法は?
- 22. OpenXML SDKでドキュメントを分割する方法
- 23. docxのテキスト(OpenXML SDKが生成された)uneditable
- 24. dompdfを使用して目次を生成するにはどうすればよいですか?
- 25. jwplayer android sdkを使用してプレロール、ミッドロール、ポストロール広告を再生する方法
- 26. iphone sdkでaudiounitとaugraphを使用して音楽を再生する方法
- 27. jQueryを使用してTinyURLを生成する方法
- 28. Pythonを使用してPWMを生成する方法
- 29. Javaを使用してライセンスキーを生成する方法
- 30. Pythonを使用してhtmlディレクトリリストを生成する方法
ありがとうございますが、リンクが壊れています。 [これは](http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2011/08/22/exploring-tables-of-contents-in-openxml-wordprocessingml-documents-part-4.aspx)でした? – Yeseanul
私はリンクを固定しています。そして - はい - これはopenxmldeveloper.orgに掲載されたものと同じです...いくつかの研究の後、私はいくつかの新しい詳細で自分の答えを調整しました –
返信いただきありがとうございます。また、ほとんどのMSDN関連のコンテンツを読みましたが、このソリューションを実装する方法はわかりません。さらに、誰も例を提供していないようだ。結局のところ、目次はドキュメントの重要な部分です...私はOpenXML SDKが何らかの形でカバーしていると思っていました(少なくとも、誰かが使いやすい使いやすいソリューションを見つけ出したと思いました)。 – Yeseanul