我们将word文档作为BLOB对象存储在Oracle 10g数据库中。我想阅读这个word文档的内容(文本),进行一些更改,并将文本单独写入C#代码中的不同字段。
如何在C#2.0中执行此操作?
我想出的最简单的逻辑是 -
我可以使用Word.dll但不能使用任何商业解决方案,例如Aspose
答案 0 :(得分:1)
我假设您已经知道如何执行步骤1和2(使用Oracle.DataAccess
和System.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自动化方法不知道你将如何操纵文档,所以他们必须预测和跟踪你可能改变的一切。另一方面,您可以使用激光焦点编写您的方法,因为您确切地知道您想要做什么。