новый формат документа для надстройки Word Interop - PullRequest
1 голос
/ 21 июня 2010

У меня возникли проблемы с надстройкой слова. Я пытаюсь создать новый формат документа и заставить его работать. Формат - это просто кодировка поверх существующего документа. Другими словами, я могу снять кодировку и остаться с действительным документом слова.

Экономия:

Прямо сейчас, когда пользователь хочет сохранить документ в новом формате, я предлагаю сохранить оригинал, а затем прочитать оригинал с диска, сохранив копию в новом формате. Это оставляет 2 файла в файловой системе (foo.docx и foo.myformat).

В идеале я хотел бы перехватить документ в событии DocumentBeforeSave, получить документ в виде байтового массива, преобразовать его в память и просто сохранить одну копию. Однако я не могу найти способ получить массив байтов.

Открытие:

Прямо сейчас, когда пользователь выбирает файл для открытия, который хранится в моем формате, я делаю временную копию (tmp \ blah.docx), а затем просто открываю документ с помощью Application.Documents.Open (tmp \ blah. DOCX ...).

Вместо этого я бы предпочел создать документ из потока памяти, чтобы избежать создания временных файлов. Можно ли создать новый Word.Document из памяти?

Любое направление будет с благодарностью. Большое спасибо.

Ответы [ 2 ]

1 голос
/ 26 июня 2010

То, что вы пытаетесь сделать, похоже на классический конвертер импорта / экспорта для документов Word. Начиная с Word 2007 с пакетом обновления 2 (SP2), вы можете использовать API на основе OpenXML для создания конвертера.

Эта статья MSDN описывает, как это сделать:

Представляем конвертер внешних файлов в формате Open XML для Microsoft Office System SP2 2007

На MSDN доступен также пример проекта:

Пример кода интерфейса Open XML Converter

0 голосов
/ 10 июля 2010

Вы можете получить документ в VSTO или VBA, используя .WordOpenXML

...