Читать объект OLE с помощью C#

У меня есть старое приложение, созданное с помощью Visual Basic, которое может загружать и скачивать документы как объекты OLE. Это извлекается в базу данных SQL Server, которая хранит их в поле varbinary(max). Однако эти корзины не имеют тот же формат, что и обычные файлы, поскольку OLE структурирует их по-своему.

Я хочу массово загрузить все эти документы с помощью приложения.NET C#, которое использует SQL, но я не могу найти способ сделать это. Я попытался скопировать двоичные данные в новый файл, используя SqlDataReader, MemoryStream а также FileStream, но они интерпретировали информацию прямо, а не так, как их структурировала OLE. Итак, полученные файлы были повреждены.

Есть ли класс, который может правильно интерпретировать эти двоичные файлы OLE? В старом приложении использовался компонент OLE-контейнер, но они не существуют уже несколько лет.

2 ответа

This is an old post that never got answered. I am in a similar situation myself in that I need to take images and convert them into OLE Files so that Microsoft Access OLE Bound Frames can read them. I have been researching this for days and have just now discovered the Binary Format that I need i.e. Compound File... or Structured File. They have this Nuget Package available which should accomplish what we both need available here: OpenMCDF

I am still in the process of trying to figure out how to create a compound file from Raw Binary... but feel I am close and will post the resolution when I get it.

Я знаю, что это старый вопрос, но вот библиотека (главы 4.5 и 4.6), содержащая все, что вам нужно знать о корне, подхранилищах и потоках.

Это довольно сложно и содержит множество объяснений, но вы не справитесь за один день.

Другие вопросы по тегам