Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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_Interop - Fatal编程技术网

C#word文档将现有word文件克隆为新文档

C#word文档将现有word文件克隆为新文档,c#,ms-word,interop,C#,Ms Word,Interop,我想创建一个应用程序来填充C#Interop.Word库自动生成的模板文档。用户从现有文件中选择模板文档。我必须将此文档克隆到新文档(包括填充、边距和所有格式) 1.我尝试过使用InsertFile函数 document = app.Documents.Add(); object missing = System.Reflection.Missing.Value; object start = 0; object end = 0; Word.Range range = document.Rang

我想创建一个应用程序来填充C#Interop.Word库自动生成的模板文档。用户从现有文件中选择模板文档。我必须将此文档克隆到新文档(包括填充、边距和所有格式)

1.我尝试过使用InsertFile函数

document = app.Documents.Add();
object missing = System.Reflection.Missing.Value;
object start = 0;
object end = 0;
Word.Range range = document.Range(ref start, ref end);
range.InsertFile(template_file_name, ref missing, ref _true, ref missing, ref missing);
并在文档中填充模板。但是这个函数改变了模板中的一些格式
2.我试过使用复制和粘贴

app=new Word.Application();
src_doc=app.Documents.Open(template_file_name);
document=app.Documents.Add();
src_doc.Content.Copy();
document.Content.PasteSpecial(DataType:Word.WdPasteOptions.wdKeepSourceFormatting);    
此代码保持格式正确。但粘贴后,更改值是有问题的。“src_文件”即使在关闭后仍保持打开状态

长话短说。需要将现有文档克隆为新文档


这可以通过向文档传递文件路径来实现。添加方法:

Word.Application _word = new Word.Application();
_word.Visible = true;
_word.WindowState = Word.WdWindowState.wdWindowStateMaximize;

Word.Document _doc = _word.Documents.Add(pathToExistingDocument);

这可以通过向文档传递文件路径来实现。添加方法:

Word.Application _word = new Word.Application();
_word.Visible = true;
_word.WindowState = Word.WdWindowState.wdWindowStateMaximize;

Word.Document _doc = _word.Documents.Add(pathToExistingDocument);

我不是专家,但你能不能把它复制成文件?您不必尝试克隆word文档,只需使用System.IO并在磁盘上创建此文件的副本,然后使用Interop打开即可?如果这不适用于您的要求,请道歉。此解决方案有效。但它会将文档作为现有文件打开。我需要将其作为新文档打开(以便用户可以将其保存到任何位置)。这里还有一个想法-将模板创建为
.dotm
模板,并在命令行上将模板作为参数打开word<代码>“C:\ProgramFiles(x86)\Microsoft Office\Office16\Winword.exe”/t“C:\Users\me\Documents\Custom Office Templates\myTemplate.dotm”如果可以将模板创建为工作模板格式,这应该可以完成您正在尝试的工作。是否可以将
.docx
而不是
.dotm
打开为模板使用文档。添加(templateFilePath)从dotm或dotx创建新的docx。我不是专家,但您不能将其复制为文件吗?您不必尝试克隆word文档,只需使用System.IO并在磁盘上创建此文件的副本,然后使用Interop打开即可?如果这不适用于您的要求,请道歉。此解决方案有效。但它会将文档作为现有文件打开。我需要将其作为新文档打开(以便用户可以将其保存到任何位置)。这里还有一个想法-将模板创建为
.dotm
模板,并在命令行上将模板作为参数打开word<代码>“C:\ProgramFiles(x86)\Microsoft Office\Office16\Winword.exe”/t“C:\Users\me\Documents\Custom Office Templates\myTemplate.dotm”如果可以将模板创建为工作模板格式,这应该可以完成您正在尝试的操作。是否可以打开
.docx
而不是将
.dotm
作为模板使用文档。添加(templateFilePath)以从dotm或dotx创建新的docx。