Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Извлечение текста из Word 2013 с помощью Delphi XE7: решение проблемы

Delphi , Технологии , OLE

Извлечение текста из полей и форм в Word 2013 с использованием Delphi XE7

Пользователь столкнулся с проблемой при попытке извлечь текст из полей и форм в документе Word 2013, используя среду разработки Delphi XE7. В частности, были созданы две формы (Name и Author) и одно текстовое поле, но стандартные методы чтения текста, которые работали для обычных абзацев и быстрых частей, не подходили для работы с этими полями.

Описание проблемы

Программа, написанная на Delphi, успешно читала текст из обычных абзацев и быстрых частей документа .docx, но не смогла извлечь данные из текстовых полей и форм. При использовании методов Count для текстовых полей возвращалось значение 0, а попытки получить результат для форм приводили к ошибке, поскольку поля не могли быть найдены.

Решение проблемы

Для решения проблемы необходимо использовать свойство ContentControls объекта Range. Это позволяет получить доступ к быстрым частям и чекбоксам. В коде Delphi для работы с ContentControls потребуется использовать Range в виде OleVariant, так как обертка Delphi не содержит этого свойства.

Пример кода для чтения содержимого ContentControls:

var
  ... // Ваши переменные
  LRange: OleVariant;
  LStartRange: Integer;
  LEndRange: Integer;
begin
  ... // Ваш код
  ...
  LStartRange := WordApplication1.ActiveDocument.Content.Start;
  LEndRange := WordApplication1.ActiveDocument.Content.End_;
  LRange := WordApplication1.ActiveDocument.Range(LStartRange, LEndRange);

  for I := 1 to LRange.ContentControls.Count do
    Memo1.Lines.Add(LRange.ContentControls.Item[I].Range.Text);
  ...
end;

Для доступа к текстовым полям следует использовать свойство Shapes. Пример кода для чтения текста из текстовых полей:

for I := 1 to WordApplication1.ActiveDocument.Shapes.Count do
  Memo1.Lines.Add(WordApplication1.ActiveDocument.Shapes.Item(I).TextFrame.TextRange.Text);

Дополнительные замечания

При использовании описанных методов важно учитывать, что быстрые части и формы могут быть обработаны разными методами. Необходимо различать эти типы элементов и использовать соответствующие свойства для их чтения.

Заключение

Используя свойства ContentControls и Shapes в комбинации с Range в виде OleVariant, можно успешно извлечь текст из полей и форм в документах Word 2013, работая в среде Delphi XE7.

Создано по материалам из источника по ссылке.

Пользователю требуется решить проблему с чтением текста из полей и форм в Word 2013 с помощью Delphi XE7, используя свойства `ContentControls` и `Shapes` для работы с быстрыми частями и текстовыми полями соответственно.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: OLE ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2024-12-26 16:10:42/0.0033581256866455/0