Как открыть документ Word, хранящийся в базе данных, с помощью .Net

У меня есть несколько документов MS Word, хранящихся в виде больших двоичных объектов в базе данных SQL Server.

Мне нужно уметь:

  1. Откройте документ
  2. Установите несколько DOCVARIABLEs
  3. Распечатать документ

Я хорошо знаком с автоматизацией Word, но не знаю, как открыть документ из базы данных. Я также открыт для решений, отличных от автоматизации, если они принесут результат.

Я бы очень хотел избежать использования временного файла.

История:

Я перестраиваю устаревшую систему, написанную в Access 2003. В устаревшей системе используется элемент управления UnboundObjectFrame, которому присваивается значение. Затем в кадре отображаются соответствующие объекты автоматизации. Я не могу найти эквивалентный элемент управления в .Net.

Джейкоб


person Jacob    schedule 14.06.2013    source источник


Ответы (1)


К сожалению, единственный вариант — создать временный файл. Office не поддерживает открытие документов из любого потока памяти или массива байтов. Если вы не знаете, как программно запросить столбец базы данных и создать временный файл, задайте новый вопрос.

person Michael Gunter    schedule 14.06.2013
comment
Если Office не поддерживает открытие документов из какого-либо потока памяти или массива байтов, то и устаревшая система не сможет этого сделать. Очевидно, что офис может открыть файл из памяти, иначе он не сможет сейчас. Также Outlook позволяет открывать все виды документов из памяти. Даже электронное письмо на самом деле является документом Word, открытым по памяти. - person Jacob; 17.06.2013
comment
Устаревшая система этого не делает. Офис это не поддерживает. Просмотрите API, и вы не найдете ничего, что поддерживало бы загрузку из памяти. В каждом случае — например, при открытии документа из Интернета или из Outlook — документ сначала сохраняется во временный файл. - person Michael Gunter; 17.06.2013
comment
Однако вы можете использовать Open XML SDK для создания или изменения документов в памяти, но у вас нет доступа ни к одной из функций автоматизации. Вы не сможете печатать. msdn.microsoft.com/en-us/library/office/bb448854. aspx - person Michael Gunter; 17.06.2013
comment
Когда я назначаю данные UnboudObjectFrame, я немедленно получаю доступ к свойству, содержащему объект Word.Document. Если создается временный файл, то Office делает это полностью за кулисами. Кроме того, я могу создать документ (или электронное письмо) с помощью автоматизации, обработать его в памяти и распечатать. Все это работает без проблем, без необходимости сохранения в файл. - person Jacob; 18.09.2013