使用C#读取存储在Oracle DB中的Word文档作为BLOB对象

时间:2010-12-14 08:34:10

标签: c# ms-word oracle10g

我们将word文档作为BLOB对象存储在Oracle 10g数据库中。我想阅读这个word文档的内容(文本),进行一些更改,并将文本单独写入C#代码中的不同字段。

如何在C#2.0中执行此操作?

我想出的最简单的逻辑是 -

  1. 阅读BLOB对象
  2. 将其存储在FileSystem
  3. 提取文字内容
  4. 做好你的工作
  5. 将文本写入单独的字段。
  6. 我可以使用Word.dll但不能使用任何商业解决方案,例如Aspose

2 个答案:

答案 0 :(得分:1)

我假设您已经知道如何执行步骤1和2(使用Oracle.DataAccessSystem.IO命名空间)。

对于第3步和第5步,请使用Word Automation。此MS支持文章向您展示了如何入门:How to automate Microsoft Word to create a new document by using Visual C#

如果您知道它将是什么版本的Word,那么我建议使用早期绑定,否则使用后期绑定。更多详细信息和示例代码:Using early binding and late binding in Automation

编辑:如果您不知道如何使用C#中的BLOB,请查看此处:How to: Read and Write BLOB Data to a Database Table Through an Anonymous PL/SQL Block

答案 1 :(得分:0)

我的搜索不断出现,所以我会为未来读者的利益添加一个答案。

我强烈建议避免Word自动化。它的速度非常缓慢,每次升级都会让您受到微软开发人员的一时兴起。相反,如果可以的话,自己手动处理文件。 The files are nothing but zipped archives of XML files and resources(例如文档中嵌入的图像)。

在这种情况下,您只需使用首选库解压缩docx,操作XML,然后将结果压缩回来。

这确实需要使用docx文件而不是doc文件,但正如上面的链接所解释的那样,这是自Office 2007以来的默认Word格式,除非您的用户拼命地坚持使用,否则不应该出现问题。过去。

对于节省时间的一个例子,回到2007年,我们使用Word自动化转换了一个花了45分钟的过程,并且在相同的硬件上,手动处理文件需要15个SECONDS。要明确的是,我并没有因此而责怪微软 - 他们的Word自动化方法不知道你将如何操纵文档,所以他们必须预测和跟踪你可能改变的一切。另一方面,您可以使用激光焦点编写您的方法,因为您确切地知道您想要做什么。

相关问题