2016-08-04 3 views
2

複雑なドキュメントを特定の場所にヘッダーでマージする際に問題が発生しています。Open XML Power Tools段落インデックスの識別

はここに例を示します

var letterhead = @"C:\Users\dheale\Desktop\Word Docs\TESTING\StandardLetterhead.DOCX"; 
var blackrule = @"C:\Users\dheale\Desktop\Word Docs\TESTING\NJBlackrule.DOCX"; 
var asb = @"C:\Users\dheale\Desktop\Word Docs\TESTING\asb.DOCX"; 
var outDoc = @"C:\Users\dheale\Desktop\Word Docs\TESTING\out.DOCX"; 

var sources = new List<Source> 
{ 
    new Source(new WmlDocument(asb), 0, 80, false), 
    new Source(new WmlDocument(letterhead), true), 
    new Source(new WmlDocument(asb), 80,120, false), 
    new Source(new WmlDocument(blackrule), true), 
    new Source(new WmlDocument(asb), 200, false), 
    new Source(new WmlDocument(letterhead), true) 
}; 

var doc = DocumentBuilder.BuildDocument(sources); 

私の問題は、段落のインデックスがあるかを把握しようとしています。元のドキュメントには、テンプレートの配置場所を識別するタグがあります。

現在、私は次のことをやっているIDを取得するには:

var ParagraphIndex = wordDoc.MainDocumentPart.Document.Body.ChildElements 
    .Where(w => w.XmlQualifiedName.Name == "p").ToList() 
    .FindIndex(f => f.InnerXml.Contains(templateTag)); 

しかし、文書長く、このインデックスオフ以上です。

段落のインデックスを取得する方法が改善されていますか?

答えて

0

タグでパラグラフを取得してから、コンテンツを挿入してみませんか?

var searchedParagraph = wordDoc.MainDocumentPart.Document.Body.ChildElements 
    .Where(w => w.XmlQualifiedName.Name == "p") 
    .FirstOrDefault(f => f.InnerXml.Contains(templateTag)); 
if (searchedParagraph != null) { 
    OpenXmlElement parent = searchedParagraph.Parent; 
    //Add Code here to create your paragraphWithContent 
    .... 
    //End paragraphWithContent 

    parent.InsertAfter(paragraphWithContent, searchedParagraph); 
} 

このようなものです。

+0

コンテンツを挿入する際の問題は、ヘッダーに含まれるイメージが失われることです。コンテンツには複雑なデータがたくさんあります。 –

関連する問題