2010-08-11 78 views
0

我们希望将Microsoft Word模板存储在我们的数据库中。然后我们希望允许用户编辑模板文件,然后将它们存储回数据库。在这种情况下使用什么是最好的策略?编辑存储在数据库中的Word文件

如果我们在单独的进程中运行Word,这可能吗?即不在我们的应用程序中托管。如果是这样,这涉及监控磁盘上的文件以进行更改,因为这听起来很可怕。有了这个想法,我们希望从内存流中打开文件,永远不要让它触及磁盘。但我们乐于接受建议。

它写入磁盘可能是问题:

一旦字从临时文件打开或文件夹的用户创建一个新的文档没有保存,然后没关字。 (所以我们无法知道该进程何时完成)或删除了临时文件或文件夹。我希望能够控制单词的解决方案,也许可以在应用程序中托管它。我想不必将其写入文件。有任何想法吗?

回答

2

对于编辑来说,我会下载文件到临时文件夹,然后在您的应用程序,我会使用自动化启动Word:

Application app = new Application(); 
app.Visible = true; 
Document doc = app.Documents.Open("path to temp file"); 

这些行将启动Word,并打开您的文件。 然后,您可以监视您的文档和Word实例发生了什么,并且当用户保存它时,只需将文件上传回数据库即可。

你总是可以隐藏和/或通过执行以下行关闭此实例:

app.Visible = false; 
app.Quit(); 

请注意,你必须引用Microsoft.Office.Interop.Word装配

+0

我编辑了这个问题来解决这个问题,有没有更多的想法? – 2010-08-11 23:37:12

+0

我看到了问题。让我想想。 我知道这是一个延伸,但可以使用Sharepoint吗?或http://office.live.com或http://docs.com? 所有3将允许您在浏览器或Word中存储和编辑文档。 因为Word可以在他们的场景中使用非文件系统存储,所以让我觉得这是可能的在你的情况。 再次,让我挖一会儿.... – TTRider 2010-08-12 01:11:28

1

我能想到下载的唯一方法该文件内存和避免磁盘完全是创建一个RAM磁盘,但可能会非常复杂,并需要管理员安装来安装ramdisk driver

关于进程和文件监视,您可以用必要的参数启动word.exe来打开文档,但仍然必须监视文件的更改以及外部进程以了解用户何时退出单词。如果用户从不保存文件或关闭文字,那么您可以做的事情就不多了。 Word不会公开进程外事件模型。

0

您必须将Word文档从数据库中提取到可在某处访问的文件(即临时目录或虚拟磁盘)。

您可以为VBA“保存”事件设置事件处理程序,因此保存文档时,可以将更改后的Word文档上传回数据库。

就像@Chris说的,如果用户永远不会保存文件或永不关闭单词,那么您可以做的事情就不多。

相关问题