2016-02-01 7 views
0

Я начал писать документ docx, чтобы сделать мой проект. Недавно я понял, что было бы проще управлять этими данными, если бы это было в базе данных. Итак, я хотел автоматически импортировать эти данные в MS Access, чтобы избежать копирования и вставки данных вручную.Импорт .docx содержимого в MS Access

Есть ли все-таки сделать это? У меня есть только согласованные способы открытия Word-приложения через Access. Я также знаю, что docx имеет структуру XML, поэтому я предполагаю, что если я смогу открыть эту структуру, было бы легко сделать парсер в VBA.

+1

Получение XML тривиально - просто откройте .docx с помощью zip-программы и извлеките подпапку «word». Будет ли это действительно полезным, это еще один вопрос ... – Andre

+0

Будет ли это разовым импортом информации из одного файла .docx? Кроме того, является ли информация в таблице в документе Word? –

+1

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

ответ

0

Существует два основных способа получения информации из документа Word и в базу данных Access: автоматизация объектной модели Word с использованием кода VBA, работающего в Word или Access, или извлечение WordOpenXML, который составляет документ Word. Вы указываете, что вы наклоняетесь к второму варианту.

Здесь, опять же, существует целый ряд подходов доступны:

  • Использование VBA в слове или Access для извлечения WordOpenXML документа, открытого в пользовательском интерфейсе приложения Word.
  • Используйте VBA in Access вместе с инструментами, отличными от VBA, для «взломать» Zip-файл и извлечь XML-файл.
  • Используйте инструменты, доступные в .NET Framework, чтобы извлечь содержимое ZIP-файла и записать его в Access, используя соединение OLE DB.

Я понимаю, что ваша цель - воссоздать документ на более позднем этапе для печати, поэтому вы хотите сохранить все форматирование. Кроме того, вы хотите иметь возможность читать контент из Access.

Я считаю, что это потребует как минимум четырех полей в таблице Access:

  1. ID
  2. Название
  3. Текст песни
  4. Полный WordOpenXML для повторного создания документа

Вы не упомянули (4) в обсуждении и описании проблемы, но если вы хотите сохранить форматирование И вы хотите t, чтобы иметь возможность читать содержимое, я считаю, что это необходимо. Хотя WordOpenXML «читабельна», там много разметки, которая не делает чтение удобным.

Если бы все было одинаково, я бы выбрал либо VBA, работающий над открытым документом Word, либо .NET-подход, используя Open XML SDK (free download .NET-библиотеку, которую вы можете ссылаться в Visual Studio и распространять с помощью решений).

Важно помнить о хранении Word Open XML в базе данных. Если что-то не изменилось в Access, вы не можете сохранить ZIP-файл - вам нужен «потоковый» формат. Это будет формат OOXML OPC с плоским файлом.

Когда вы читаете WordOpenXML из документа с помощью VBA, это то, что вы получаете, поэтому это вариант для меня. Open SDK SDK не имеет этого параметра, но для этого есть код, доступный от Eric White's blog.

Когда вы позже захотите воссоздать и распечатать документ, этого должно быть достаточно, чтобы передать WordOpenXML в файл с расширением .xml. Или вы можете преобразовать его обратно в zoc-файл docx (тот же блог).

+0

Спасибо за ответ @CindyMeister! Я склонялся к второму подходу. Поэтому, если я правильно понял, сначала я извлекаю XML из docx, используя 7zip или smth. Затем я разбираю этот XML через VBA? – user2934164

+0

@ user2934164 Да ... Вопрос в том, что вы собираетесь с этим делать. Это не простой вопрос, преобразование этой информации в формат файлов OPC, что является единственным способом, который имеет смысл для сохранения достаточной информации для воссоздания документа из данных, хранящихся в вашей базе данных. –

+0

Я думал использовать что-то вроде Cristal Reports для обработки стороны печати – user2934164

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