使用interop.word无需更改视图模式即可更新文档

时间:2010-01-12 17:03:54

标签: c# interop ms-word

我正在使用C#和Microsoft.Office.Interop.Word执行以下操作

  1. 打开文档
  2. 更新文件的内容
  3. 保存并关闭文档
  4. 如果使用此方法打开文档,FileName是文件名,AddToRecentFiles为false,其他所有内容都是Missing.Value

    Document Open(
     [In] ref object FileName, 
     [In, Optional] ref object ConfirmConversions, 
     [In, Optional] ref object ReadOnly, 
     [In, Optional] ref object AddToRecentFiles, 
     [In, Optional] ref object PasswordDocument, 
     [In, Optional] ref object PasswordTemplate, 
     [In, Optional] ref object Revert, 
     [In, Optional] ref object WritePasswordDocument, 
     [In, Optional] ref object WritePasswordTemplate, 
     [In, Optional] ref object Format, 
     [In, Optional] ref object Encoding, 
     [In, Optional] ref object Visible, 
     [In, Optional] ref object OpenAndRepair, 
     [In, Optional] ref object DocumentDirection, 
     [In, Optional] ref object NoEncodingDialog, 
     [In, Optional] ref object XMLTransform
    );
    

    我遇到的问题是我希望处理是静默的,也就是说我不想向用户显示应用程序。这可以通过让Visible变为虚假来轻松完成。

    但是,如果我将Visible设置为false,更新,保存并关闭文档,那么下次打开文档时,它将以草稿模式打开。我不希望在更新文档时更改视图模式。如果我的程序在处理之前我的文档处于打印布局模式,我希望它在下次打开时保持打印布局模式。

    我现在在哪里,我有两个选择:
    使用visible = true打开文档并保持查看模式 使用visible = false打开文档,并始终将视图模式设置为Draft。

    有没有人有我的第三选择,这个选项让我更新文档的内容而不向用户显示单词应用程序?

2 个答案:

答案 0 :(得分:4)

您可以从代码切换回打印版面视图:

using Word = Microsoft.Office.Interop.Word;

// Option 1: via Application object
Word.Application app = new Word.Application();
app.ActiveWindow.ActivePane.View.Type = Word.WdViewType.wdPrintView;

// Option 2: via Document object
Word.Document doc;
object objOne = 1;
doc.Windows.get_Item(ref objOne).View.Type = Word.WdViewType.wdPrintView;

VBA等价物:

ActiveDocument.Windows(1).View = wdPrintView

最佳做法是备份原始视图,然后在完成自动化任务后将其恢复。

您没有显示您的代码,因此我们无法知道您确实做了哪些修改。但是,某些自动化任务(如修改页眉/页脚)可能需要某个视图。

答案 1 :(得分:1)

还有一些人参与了这些参数,事实证明使用了这些参数 Visible=Missing.Value代替truefalse将允许我以静默方式处理文档,并且不会更改视图类型。