Чтение документов Word, хранящихся в БД Oracle, как объекта BLOB с использованием C # - PullRequest
1 голос
/ 14 декабря 2010

Мы сохраняем текстовый документ в базе данных Oracle 10g как объект BLOB. Я хочу прочитать содержимое (текст) этого документа word, внести некоторые изменения и записать только текст в другое поле в коде C #.

Как мне это сделать в C # 2.0?

Самая простая логика, которую я придумал, это -

  1. Читать объект BLOB
  2. Сохраните его в файловой системе
  3. Извлечь текстовое содержимое
  4. Делай свою работу
  5. Запишите текст в отдельное поле.

Я могу использовать Word.dll, но не любые коммерческие решения, такие как Aspose

Ответы [ 2 ]

1 голос
/ 14 декабря 2010

Я предполагаю, что вы уже знаете, как выполнять шаги 1 и 2 (используйте пространства имен Oracle.DataAccess и System.IO).

Для шагов 3 и 5 используйте Word Automation .В этой статье поддержки MS показано, как начать работу: Как автоматизировать Microsoft Word для создания нового документа с помощью Visual C #

Если вы знаете, какой это будет версия Word, то ярекомендую использовать раннее связывание, в противном случае использовать позднее связываниеПодробности и пример кода здесь: Использование раннего и позднего связывания в Automation

Редактировать: Если вы не знаете, как использовать BLOB из C #, посмотрите здесь: Как читать и записывать BLOB-данные в таблицу базы данных через анонимный блок PL / SQL

0 голосов
/ 19 июня 2017

Это продолжает появляться в моих поисках, поэтому я добавлю ответ для будущих читателей.

Я настоятельно рекомендую избегать автоматизации Word.Это мучительно медленно и подчиняет вас прихотям разработчиков Microsoft с каждым обновлением.Вместо этого обработайте файлы вручную, если можете. Файлы - это не что иное, как архивные архивы файлов и ресурсов XML (например, изображения, встроенные в документ).

В этом случае вы просто разархивируете docx, используя предпочитаемую библиотеку, манипулируете XML, а затем заархивируете результат.

Это требует использования файлов docx, а нефайлы документов, но, как показано в приведенной выше ссылке, это был формат Word по умолчанию с Office 2007, и он не должен вызывать проблем, если ваши пользователи отчаянно не цепляются за прошлое.

Пример экономии времениЕще в 2007 году мы преобразовали один процесс, который занял 45 минут с помощью автоматизации Word, и на том же оборудовании это заняло 15 секунд, обрабатывая файлы вручную.Чтобы быть ясным, я не виню Microsoft за это - их методы автоматизации Word не знают, как вы будете манипулировать документом, поэтому они должны предвидеть и отслеживать все, что вы могли бы изменить.Вы, с другой стороны, можете написать свой метод с лазерной фокусировкой, потому что вы точно знаете, что хотите делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...