C# 编辑存储在数据库中的Word文件

C# 编辑存储在数据库中的Word文件,c#,.net,database,ms-word,C#,.net,Database,Ms Word,我们希望在数据库中存储Microsoft Word模板。然后,我们希望允许用户编辑模板文件,然后将它们存储回数据库。在这种情况下,最好的策略是什么 如果Word在单独的进程中运行,这是否可能?i、 e.未在我们的应用程序中托管。如果是这样的话,这会涉及到监视磁盘上的文件的更改,因为这听起来很可怕。基于这种想法,我们希望从内存流中打开文件,并且永远不要让它接触磁盘。但我们愿意接受建议 将其写入磁盘的问题可能是: 从临时文件或文件夹打开word后,用户未保存就创建了新文档,然后没有关闭word。(因

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

如果Word在单独的进程中运行,这是否可能?i、 e.未在我们的应用程序中托管。如果是这样的话,这会涉及到监视磁盘上的文件的更改,因为这听起来很可怕。基于这种想法,我们希望从内存流中打开文件,并且永远不要让它接触磁盘。但我们愿意接受建议

将其写入磁盘的问题可能是:


从临时文件或文件夹打开word后,用户未保存就创建了新文档,然后没有关闭word。(因此,我们无法判断进程何时完成)或删除临时文件或文件夹。我希望解决方案,我可以控制字,也许主机在应用程序中。我希望不必将其写入文件。有什么想法吗?

对于编辑,我会将文件下载到临时文件夹中,然后在您的应用程序中,我将使用自动化启动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.Wordassembly

进行编辑,我会将文件下载到temp文件夹中,然后在您的应用程序中使用Automation启动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
assembly

我能想到的将文档下载到内存并完全避免使用磁盘的唯一方法是创建一个ram磁盘,但这可能会变得相当复杂,并且需要管理员安装才能安装


关于进程和文件监视,您可以使用打开文档所需的参数启动word.exe,但仍然需要监视文件的更改和外部进程,以了解用户何时退出word。如果用户从不保存文件或关闭word,您就无能为力。Word不会公开进程外事件模型。

我能想到的将文档下载到内存并完全避免使用磁盘的唯一方法是创建一个ram磁盘,但这可能会变得非常复杂,并且需要管理员安装才能安装


关于进程和文件监视,您可以使用打开文档所需的参数启动word.exe,但仍然需要监视文件的更改和外部进程,以了解用户何时退出word。如果用户从不保存文件或关闭word,您就无能为力。Word不公开进程外事件模型。

您必须将Word文档从数据库拉到某个可访问的文件中(即临时目录或磁盘上)

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


就像@Chris所说的,如果用户从未保存文件或从未关闭word,你就无能为力了。

你必须将word文档从数据库拉到某个可以访问的文件中(例如,在临时目录或磁盘上)

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


就像@Chris所说的,如果用户从未保存文件或从未关闭word,你就无能为力了。

我编辑了这个问题以解决这个答案的问题,还有什么想法吗?我看到了问题所在。让我想想。我知道这是一个延伸,但你能使用Sharepoint吗?还是?所有3个都允许您在浏览器或Word中存储和编辑文档。因为Word可以在他们的场景中使用非文件系统存储,所以我认为在您的场景中这是可能的。再一次,让我挖掘一下……我编辑了这个问题,用这个答案来解决问题,还有什么想法吗?我看到问题了。让我想想。我知道这是一个延伸,但你能使用Sharepoint吗?还是?所有3个都允许您在浏览器或Word中存储和编辑文档。因为Word可以在他们的场景中使用非文件系统存储,所以我认为在您的场景中这是可能的。再一次,让我挖一会儿。。。。