在MS Access中提取Word OLE对象

时间:2016-09-18 16:57:08

标签: c# ms-access ms-word office-interop ole

我有一个带有Microsoft Access数据库的C#项目。在表格内我有一个附加OLE对象(Word文件)的列。解决方案是 - 使用C#从数据库打开此附加的Word文件。在Internet上找到了很多带有图像的示例,但没有带有Word文件的示例。

我尝试了这个,但它没有用。有什么帮助吗?

string strSQL = "SELECT Attach FROM tbl_example WHERE ID=1";
OleDbCommand cmd = new OleDbCommand(strSQL, con);

var oleBytes = (Byte[])cmd.ExecuteScalar();
const int offset = 85;

MemoryStream ms = new MemoryStream();
ms.Write(oleBytes, offset, oleBytes.Length - offset);

Word.Application newWordApp = new Word.Application();
newWordApp.Visible = true;
Word.Document newWordDoc = newWordApp.Documents.Open(ms);

1 个答案:

答案 0 :(得分:0)

我正在重新设计代码。 现在使用此示例 - 将读取OLE文档文档并保存。当我双击打开文件夹测试中保存的word文档 - 第一个单词应用程序打开并给我带来消息时,word文件已损坏。然后我按下OK按钮,文档将打开...所有文本和图片都保存为数据库中的OLE对象。所以它现在可以工作99%:D ...这段代码有效,不停止调试。但新保存的word文件(来自访问ole db)有点腐败...

        string strSQL = "SELECT Anhang FROM tbl_inhalte WHERE ID=1";
        OleDbCommand cmd = new OleDbCommand(strSQL, con);
        var oleBytes = (Byte[])cmd.ExecuteScalar();

        File.WriteAllBytes(@"c:\test\worddatei.docx", oleBytes.Skip(0).ToArray());