Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.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文档中,包括书签?_C#_Ms Word_Copy - Fatal编程技术网

C# 如何将word文档内容复制到另一个word文档中,包括书签?

C# 如何将word文档内容复制到另一个word文档中,包括书签?,c#,ms-word,copy,C#,Ms Word,Copy,我想将word文档的内容复制到另一个word文档,包括书签。我怎么能用c#做到这一点 我已尝试使用Microsoft.Office.Interop.Word Application wApp = new Application(); Documents wDocs = wApp.Documents; Document wDocTemplate = wDocs.Open(@"source\path\source.docx", Type.Missing, true); Range oRange =

我想将word文档的内容复制到另一个word文档,包括书签。我怎么能用c#做到这一点

我已尝试使用Microsoft.Office.Interop.Word

Application wApp = new Application();
Documents wDocs = wApp.Documents;
Document wDocTemplate = wDocs.Open(@"source\path\source.docx", Type.Missing, true);
Range oRange = wDocTemplate.Content;
oRange.Copy();
wDocTemplate.ActiveWindow.Selection.WholeStory();
Document wDoc = wApp.Documents.Add();
wDoc.Content.PasteSpecial(DataType: WdPasteOptions.wdKeepSourceFormatting);
wDoc.SaveAs(@"destination\path\destination.docx");
wDoc.Activate();

但是在destination.docx中没有source.docx书签。如何在destination.docx中的相同位置包含source.docx书签?

我建议您使用Open XML SDK。 你可以在这里找到官方文件

以下是复制word文档的一些代码:


正如我在评论中提到的,复制整个内容与将文档副本保存到新位置没有区别。您甚至可以不用Word,只需使用
System.IO.File.Copy
,就可以实现这一点

话虽如此,这将是通过Word interop实现此目的的一个示例,以防您只想将文档的一部分保存到另一个文档中(例如,使用除
内容
以外的其他范围):


假设目的是处理副本,保持原始文档不变,Word的最佳方法是使用
文档。添加
,将原始文档指定为用于新文档的“模板”。(注意:此方法可以处理文档和模板文件。)这将在Word应用程序界面中创建原始文档的副本,以便代码或用户可以继续在其中工作。无需打开原始文件;没有对其进行意外更改的危险

Application wApp = new Application();
Documents wDocs = wApp.Documents;
Document wDoc = wDocs.Add(@"source\path\source.docx", Type.Missing, Type.Missing, true);
Range oRange = wDoc.Content;
wDoc.SaveAs(@"destination\path\destination.docx");
wDoc.Activate();

嗯。。。。因此,您希望将Word文档的全部内容复制到新的空白文档中并保存该文档。。。为什么不简单地用新名称/路径保存原始文件?任务完成了,不是吗?@AnasAlweish我使用了这个代码,但在我的新文档中没有第一个bookmars文档。所以,这不是一个重复的问题。我同意,你想要实现的与仅仅复制文件有什么不同?你能澄清一下吗?
var wdApp=new Word.Application();
var docments = wdApp.Documents;
var doc = docments.Open(pathToSourceDoc);
var doc2 = docments.Add();
doc.Content.Copy();
doc2.Content.Paste();
doc2.SaveAs(pathToCopyDoc);
doc2.Close();
doc.Close();
Marshal.ReleaseComObject(doc2);
Marshal.ReleaseComObject(doc);
Marshal.ReleaseComObject(docments);
wdApp.Quit();
Marshal.ReleaseComObject(wdApp);
Application wApp = new Application();
Documents wDocs = wApp.Documents;
Document wDoc = wDocs.Add(@"source\path\source.docx", Type.Missing, Type.Missing, true);
Range oRange = wDoc.Content;
wDoc.SaveAs(@"destination\path\destination.docx");
wDoc.Activate();