Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式将Word文档插入现有文档(Word 2007)_C#_Api_Insert_Word 2007 - Fatal编程技术网

C# 以编程方式将Word文档插入现有文档(Word 2007)

C# 以编程方式将Word文档插入现有文档(Word 2007),c#,api,insert,word-2007,C#,Api,Insert,Word 2007,我有一个Word 2007文档,我想在其中插入一个现有的Word文档,同时保留这两个文档的页眉/页脚、图形、边框等 我用C中的API这个词来做这件事 这听起来很简单,我的意思是你肯定只是使用InsertFile方法。。。 除了在Word 2007中,插入文件功能现在实际上是从文件中插入文本,它只是这样做-省去了页面边框、图形和页脚等 好吧,我会用复制粘贴来代替,就像这样 _Document sourceDocument = wordApplication.Documents.Open(inser

我有一个Word 2007文档,我想在其中插入一个现有的Word文档,同时保留这两个文档的页眉/页脚、图形、边框等

我用C中的API这个词来做这件事

这听起来很简单,我的意思是你肯定只是使用InsertFile方法。。。 除了在Word 2007中,插入文件功能现在实际上是从文件中插入文本,它只是这样做-省去了页面边框、图形和页脚等

好吧,我会用复制粘贴来代替,就像这样

_Document sourceDocument = wordApplication.Documents.Open(insert the 8 million by ref parameters Word requries)
sourceDocument.Activate(); // This is the document I am copying from 
wordApplication.Selection.WholeStory();
wordApplication.Selection.Copy();
targetDocument.Activate(); // This is the document I am pasting into
wordApplication.Selection.InsertBreak(wdSectionBreakNextPage);
Selection.PasteAndFormat(wdFormatOriginalFormatting);
wordApplication.Selection.InsertBreak(wdSectionBreakNextPage);
它执行您期望的操作,获取源文档,选择所有内容,复制它,然后将其粘贴到目标文档中。因为我在粘贴之前添加了一个分节符,所以它还保留了两个文档的边框、页眉/页脚


然而,这就是我的问题所在。如果粘贴在目标文档的末尾,则粘贴仅包括边框、标题等。如果我把它粘贴在中间——尽管前面有一个段落中断,那么只有文本被粘贴,标题和边框等都丢失了。InsertFile包含从中获取的参数,这些参数可能会解决问题。不过你可能已经考虑过了


奇怪的是,我现在正在研究类似的东西,发现了一个用C编写的powershell cmdlet库,您可能会发现它很有用:


如果同一图像在文档的多个部分中,但很多结构都已就位,则继承的页眉和页脚以及图像引用仍有一些问题,无法正确复制。

将WORD文档插入另一个WORD 2007文档 我发现WORD 2007成功的唯一方法是。。。
打开要向其中添加页面的文档,然后转到功能区上的“插入”选项卡,查看与文本框、word art等位置相同的文本部分,然后选择“对象”,此时会出现一个下拉菜单,然后选择“文件中的文本”。从这里,您只需选择要插入的文档并完成它,您可能需要进行一些轻微的调整,但所有文档的格式都正确,请确保将光标放在您希望插入新内容的位置。希望这能对我有所帮助。仍在寻找更好的解决方案。请确保添加对Interop.Word的引用。我知道这是一个旧线程,我正在使用Word 2016,但我搜索了很长时间,不得不拼凑解决方案

using Word = Microsoft.Office.Interop.Word;
var wordApp = new Word.Application();
wordApp.Visible = true;
wordApp.Documents.Add(@"C:\workingtemplate.dotx");
//Open is for an existing document. 
//Add is to use a template.
//Get the range to be able to then collapse and have the correct insertion point
var rng = wordApp.ActiveDocument.Range();
rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
rng.InsertBreak(Word.WdBreakType.wdPageBreak);
rng.InsertFile(@"C:\temp.docx");

谢谢你的建议-我还没有试过InsertFile。我现在正在尝试,但正在努力让它工作…我认为这不可能,因为我没有做文档级VSTO应用程序,我没有访问controlcollection的权限,例如bookmark对象似乎需要的权限。遗憾的是,可能不会有帮助,但可以在这里找到一个以上的工作示例,更仔细地查看该链接-它不是使用书签方法-它使用的是标准的“insertfile”方法,在2007年或-我想2003年,感谢您让我知道这一点,它为我提供了解决这些办公室问题的另一种途径