Interop Microsoft Word - 无法覆盖保存 "read only"

Interop Microsoft Word - Cannot overwrite save "read only"

我查看了一些资源,但它们似乎没有解决问题。

Error: System.Runtime.InteropServices.COMException'occurred in PFML_Auto_Fax.exe Additional information: This file is read-only.

代码:

public void Save()
{
    oDoc.Saved = true;
    oDoc.SaveAs2(Path.Combine(Environment.CurrentDirectory, "temp.doc"));// this is where 
    ((_Document)oDoc).Close();
    ((_Application)oWord).Quit();
    System.Runtime.InteropServices.Marshal.ReleaseComObject(oDoc);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(oWord);
    oDoc = null;
    oWord = null;
    GC.Collect();
}

注意:循环保存一次,第二次循环将无法保存在上面指示的行!

如您所见,我将文档和应用程序设置为空,然后强制进行垃圾回收,但程序仍然坚持它是打开的。

问题是我的问题是一遍又一遍地循环创建和保存这个特定文件。但如果它真的在我想要的时候退出,我就不会有问题。

主要问题:处理退出并单独保留我新保存的文件,以便我可以在下一个循环中覆盖它并使用它。

类似问题:

InteropServices.COMException (This file is read-only).

Disposing of Microsoft.Office.Interop.Word.Application

编辑: 这是有问题的循环

foreach (Principal p in principalList)
{
    WordManager wManager = new WordManager(wordDocDir);
    wManager.ReplaceText("XX", DateTime.Now.ToString("dd"));
    wManager.ReplaceText("INSERTNAME1", String.Format("{0} {1} {2}", p.Salutation != null ? p.Salutation.Trim() : "Principal", p.FristName != null ? p.FristName : "", p.LastName !=null ? p.LastName : ""));

    foreach (string key in toReplace.Keys)
    {
        string outkey;
        toReplace.TryGetValue(key, out outkey);
        wManager.ReplaceText(key, p.AdditionalText[Int32.Parse(outkey)]);
    }
    wManager.Save();
    wManager = null;
    GC.Collect();
    fManager.SendFax(p);
}

似乎 DocX interlop 更好。普通的 office interlop 无法关闭单词。