2016-09-18 5 views
-1

У меня есть проект C# с базой данных Microsoft Access. Внутри таблицы у меня есть столбец с прикрепленными объектами OLE (файлы Word). Решение - открыть эти прикрепленные файлы Word из базы данных с помощью C#. В Интернете так много примеров с изображениями, но нет примера с файлом Word.Извлечь Word OLE-объект в MS Access

Я пробовал это, но это не сработало. Любая помощь?

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 будет считан и будет сохранен. Когда я дважды щелкнул, чтобы открыть документ сохраненного слова в тесте папки - откроется первое слово-приложение и принесите мне сообщение, файл слова поврежден. Затем я нажимаю кнопку ОК, и документ будет открыт ... со всем текстом и изображениями сохраняются как OLE-объект в базе данных. Так что теперь он будет работать 99%: D ... этот код работает, не останавливается при отладке. но новый сохраненный файл слова (от доступа 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()); 

 Смежные вопросы

  • Нет связанных вопросов^_^