2016-09-18 86 views
-1

我有一個C#項目與Microsoft Access數據庫。在表格中我有一個帶有OLE對象(Word文件)的列。解決方法是 - 使用C#從數據庫打開附加的Word文件。在互聯網上發現了很多帶有圖像的例子,但沒有使用Word文件的例子。MS Access中提取Word OLE對象

我試過了,但沒有奏效。任何幫助?

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); 
+0

您當前發佈的代碼是行不通的嗎? – Rahul

+0

對不起...是的最後一個代碼行不起作用。這是不可能採取MemoryStream和Word.Dociment .... –

回答

0

我重新設計了代碼。 現在用這個例子 - OLE 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());