1

Word 文書のブックマークを別の Word 文書の内容全体に置き換えようとしています。私は次の行に沿って何かをしたいと思っていましたが、画像が含まれていないため、xml を追加するだけでは十分ではないようです。

using Word = Microsoft.Office.Interop.Word;
...

Word.Application wordApp = new Word.Application();
Word.Document doc = wordApp.Documents.Add(filename);
var bookmark = doc.Bookmarks.OfType<Bookmark>().First();

var doc2 = wordApp.Documents.Add(filename2);

bookmark.Range.InsertXML(doc2.Contents.XML);

2 番目のドキュメントには、いくつかの画像といくつかのテキストの表が含まれています。


更新: XML を使用することで進歩が見られますが、写真の追加もまだ満足していません。

4

2 に答える 2

0

これは、openxml SDK とドキュメント ビルダーを使用して行うことができます。ここで概説するには、必要なものです

1>メインドキュメントに挿入キーを挿入する

public WmlDocument GetProcessedTemplate(string templatePath, string insertKey)
{
    WmlDocument templateDoc = new WmlDocument(templatePath);
    using (MemoryStream mem = new MemoryStream())
    {
        mem.Write(templateDoc.DocumentByteArray, 0, templateDoc.DocumentByteArray.Length);
        using (WordprocessingDocument doc = WordprocessingDocument.Open([source], true))                            
        {
            XDocument xDoc = doc.MainDocumentPart.GetXDocument();
            XElement bookMarkPara = [get bookmarkPara to replace];
            bookMarkPara.ReplaceWith(new XElement(PtOpenXml.Insert, new XAttribute("Id", insertKey)));
            doc.MainDocumentPart.PutXDocument();
        }
        templateDoc.DocumentByteArray = mem.ToArray();
    }
    return templateDoc;
}

2>ドキュメントビルダーを使用してマージします

List<Source> documentSources = new List<Source>();
var insertKey = "INSERT_HERE_1";
var processedTemplate = GetProcessedTemplate([docPath], insertKey);  
documentSources.Add(new Source(processedTemplate, true));
documentSources.Add(new Source(new WmlDocument([docToInsertFilePath]), insertKey));
DocumentBuilder.BuildDocument(documentSources, [outputFilePath]);
于 2013-05-18T14:31:40.900 に答える