我正在与Word交互的应用程序中工作。 我们在数据库中导入文档,然后允许用户使用Microsoft Word通过NetOffice.WordApi修改这些文档。
当文档标记为只读时,我们遇到了一些问题,每次打开时,我们都会得到一个“另存为”文字对话框,让您可以select创build文档的临时副本,以便在文档中进行更改。
我的问题如下:如何删除文件的只读文字标记并重新保存没有标记的文件? 我可以按照下面的链接中的说明手动删除选项,但我想通过代码自动完成该过程。
作者希望您以只读方式打开它
**请在回答之前通知以下内容:它不是windows级别文件中的只读属性,它不是Windows授权的问题。 文件属性不是只读属性位于word文档中。 所以,通过代码改变windows文件permision属性是行不通的,实际上这些文件在windows中检查文件属性时不是只读的,它是一个字属性,这意味着作者在保存文件时将其标记为只读并会阻止你使用word来修改文件(文件可以使用不同的软件进行更改,它只能读取文字)。 请不要给我链接有关如何更改在Windows中的权限,而不是这种情况下,检查链接的更多信息。 **
非常感谢您的时间。
您要设置的选项是Word文档的Document.ReadOnlyRecommended
属性。
当您打开一个Word文档时,您可以使用Document.Open方法中的第三个参数实际设置ReadOnly
属性。 但是,该参数不会覆盖已保存文档上的只读建议设置。 因此,如果您的文档使用只读推荐选项进行保存,则在调用Document.Open
时将以只读方式打开。
所以我认为你有两个选择:
选项1
在Document.ReadOnlyRecommended
首次保存前,将Document.ReadOnlyRecommended设置为false,与此类似
objDoc.ReadOnlyRecommended = false;
选项2
如果文档已被设置为只读建议,则需要使用Document.SaveAs2方法将文档保存为Document.ReadOnlyRecommended
属性设置为false的新文件。
您的代码可能如下所示:
object missing = System.Reflection.Missing.Value; object readOnly = false; object fileName = @"C:\User\MyFile.docx"; object newFileName = @"C:\User\MyNewFile.docx"; var objApp = new Application(); var objDoc = objApp.Documents.Open(ref fileName, ref missing, ref readOnly); if (objDoc.ReadOnlyRecommended) { objDoc.SaveAs2(ref newFileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref readOnly); } objDoc.Close(); objApp.Quit();