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を使用してExcelシートのFormControlチェックボックスにアクセスする方法
- 4. OpenXML Sdkを使用して段落のテキストを置き換える方法
- 5. Openxml sdk。
- 6. オープンのOpenXML SDKで作業する方法については、次の資料、次のストリーム(オープンXML SDK)
- 7. OpenXML SDKを使用してC#の最初のページの後に目次を追加
- 8. OpenXML SDKを使用したExcelスプレッドシートでのセルコメントの作成
- 9. OpenXML SDK 2.0 XMLパーツと要素を列挙します
- 10. Beam 2.0を使用してDataflowテンプレートパイプラインを作成する方法は?
- 11. OpenXML SDKスプレッドシートスターターキット
- 12. WSO2 Apiマネージャを使用してswift3 API SDKを生成する方法
- 13. C#でiTextSharpを使用して目次を作成する方法
- 14. OpenXMLでFormat(#、###。##)を使用して10進数のCellValueを作成する方法
- 15. 方法:VersionOne SDKを使用してアセットを作成する
- 16. Python SDKを使用してAzureアプリケーションゲートウェイを作成する方法
- 17. OneDrive SDKを使用してフォルダを作成する方法
- 18. PHP SDKを使用してfqlマルチクエリを作成する方法
- 19. Openxml 2.0 xml処理
- 20. ADTを使用してJavadocを生成する方法r17
- 21. C#OpenXmlWriter(OpenXML SDK 2.5)を使用してExcelシートのすべての行にセルを追加する方法
- 22. マージフィールドをOpenXML SDK 2.0のテキストに置き換えます
- 23. Roslyn CSharpCompilationを使用して.NET標準2.0 DLLを生成
- 24. Android SDKを使用してThing Typeで作成する方法
- 25. OpenXmlからPDFを生成
- 26. OpenXML SDKを使用してプログラムでWord文書にFootNotesを追加するC#
- 27. OpenXML SDKを使用してExcelでセルを選択および編集する
- 28. JavaScript SDKを使用してAWS PollyでAudioStreamレスポンスを再生する方法は?
- 29. XMLSerializerを使用してXMLを生成する方法は?
- 30. LLVMを使用してコールグラフを生成する方法は?
ありがとうございますが、リンクが壊れています。 [これは](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