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 无法关闭单词。
我查看了一些资源,但它们似乎没有解决问题。
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 无法关闭单词。