C#关闭word时,提示“此文件正由另一个应用程序或用户使用” normal.dot
2010-09-25 10:56
274 查看
本文欢迎转载,但必须在文章显眼处保留原文地址
/article/7066398.html
由于项目需要将一个doc文件转换成一个html文件,同时显示在web页面上.在项目开始前期时,做了Demo后,没有发现什么问题,到真正开始时,问题就来了!
第一:在转换成html文件后,打开html时,有时会提示文件正在使用之类的,通过强大的谷歌得到的结果是说,由于内存没有及时释放(运行速度问题吧,因为我是有退出了word对象的),那我就让当前程 序停留半秒Thread.Sleep(500);,果然,问题解决了.一切正常.
第二:隔后以现,第二个问题又出现了,就是当你本地打开了一个word程序(即使不同个文件),然后再用C#去转换成html,再打开html时,又是报了一个正在使用之类的提示.这时就觉得奇怪了,我本地又没有打开页面上打开的文件.最后发现,我只是退出,没有关闭
关闭代码:
object Unknown = Type.Missing;
docs.Close(ref Unknown, ref Unknown, ref Unknown);
退出代码:
wordtype.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, appclass, null);//退出
加上关闭后,勉强算是可以实现了,为啥说是勉强呢,因为在打开之前页面之前(就是转换成html成功之后,要退出word的时候),会提示“此文件正由另一个应用程序或用户使用” c:\Documents and Settings..\normal.dot
其实他大概的意思就是你更新了模板,要不要替换之类的吧!这时你打开一个word,选择"工具->模板->把自动更新样式的勾去掉"就行了(网上是这样说的,不过本人试了,公司的电脑这样可以解决问题,但本人的笔记本不能解决),最后在ApplicationClass对象里面,有一个可以保存模板的属性,只要将这个属性设置成true就行了.
//避免弹出normal.dot被使用的对话框,自动保存模板
appclass.NormalTemplate.Saved = true;
下面是主要代码(由于所有代码太多,也没整理,就不贴出来),如果有问题或者不明之处,请与我联系!
doctype.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { savefilename, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML });//另存为Html格式
//避免弹出normal.dot被使用的对话框,自动保存模板
appclass.NormalTemplate.Saved = true;
object Unknown = Type.Missing;
docs.Close(ref Unknown, ref Unknown, ref Unknown); //关闭
wordtype.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, appclass, null);//退出
/article/7066398.html
由于项目需要将一个doc文件转换成一个html文件,同时显示在web页面上.在项目开始前期时,做了Demo后,没有发现什么问题,到真正开始时,问题就来了!
第一:在转换成html文件后,打开html时,有时会提示文件正在使用之类的,通过强大的谷歌得到的结果是说,由于内存没有及时释放(运行速度问题吧,因为我是有退出了word对象的),那我就让当前程 序停留半秒Thread.Sleep(500);,果然,问题解决了.一切正常.
第二:隔后以现,第二个问题又出现了,就是当你本地打开了一个word程序(即使不同个文件),然后再用C#去转换成html,再打开html时,又是报了一个正在使用之类的提示.这时就觉得奇怪了,我本地又没有打开页面上打开的文件.最后发现,我只是退出,没有关闭
关闭代码:
object Unknown = Type.Missing;
docs.Close(ref Unknown, ref Unknown, ref Unknown);
退出代码:
wordtype.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, appclass, null);//退出
加上关闭后,勉强算是可以实现了,为啥说是勉强呢,因为在打开之前页面之前(就是转换成html成功之后,要退出word的时候),会提示“此文件正由另一个应用程序或用户使用” c:\Documents and Settings..\normal.dot
其实他大概的意思就是你更新了模板,要不要替换之类的吧!这时你打开一个word,选择"工具->模板->把自动更新样式的勾去掉"就行了(网上是这样说的,不过本人试了,公司的电脑这样可以解决问题,但本人的笔记本不能解决),最后在ApplicationClass对象里面,有一个可以保存模板的属性,只要将这个属性设置成true就行了.
//避免弹出normal.dot被使用的对话框,自动保存模板
appclass.NormalTemplate.Saved = true;
下面是主要代码(由于所有代码太多,也没整理,就不贴出来),如果有问题或者不明之处,请与我联系!
doctype.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { savefilename, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML });//另存为Html格式
//避免弹出normal.dot被使用的对话框,自动保存模板
appclass.NormalTemplate.Saved = true;
object Unknown = Type.Missing;
docs.Close(ref Unknown, ref Unknown, ref Unknown); //关闭
wordtype.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, appclass, null);//退出
相关文章推荐
- C#关闭word时,提示“此文件正由另一个应用程序或用户使用” normal.dot
- C#关闭word时,提示“此文件正由另一个应用程序或用户使用” normal.dot
- C#关闭word时,提示“此文件正由另一个应用程序或用户使用”
- 同时启动了多个word的exe,word退出的时候,会报警告“此文件正由另一个应用程序或用户使用” normal.dot
- Word退出时(App.Quit())报错 "此文件正由另一个应用程序或用户使用"(原创)
- 关闭word文件老是说normal.dot被另外一人使用
- Word退出时报错 "此文件正由另一个应用程序或用户使用"
- Word退出时报错 "此文件正由另一个应用程序或用户使用"
- word转pdf时,出现“此文件正由另一应用程序或用户使用”的问题
- jacob下载问题, Office word 此文件正由另一应用程序或用户使用的解决方法
- 关闭文档时总是提示Normal.dot文件被占用《转》
- windows server 2003更新后 启动网站提示另一个程序正在使用此文件,进程无法访问 关闭phpstudy全部停止再启动OK
- WORD2003打开关闭出错,提示normal.dot文件的问题
- C# 读写Word :提示将 Word 用作自动化服务器时提示保存 Normal.dot (独占Normal.dot,没办法读写的解决方案)
- CentOS使用sudo提示用户不在sudoers文件中的解决方法
- iis提示“另一个程序正在使用此文件,进程无法访问。(异常来自HRESULT:0x80070020)
- vs2008(C#) IDE 使用之 菜单栏/文件/打开,关闭,关闭解决方案...
- 普通域用户登录Windows7提示已使用临时配置文件登录的解决方法
- iis提示“另一个程序正在使用此文件,进程无法访问”解决办法
- excel文件总是提示“内存不足,无法打开excel,请关闭其他应用程序再试。”解决办法