Как работать с таблицами Word в Delphi?

Использую RAD Studio 10.1 Berlin.

Возникла вот такая задача:
Есть word документ в котором большое количество таблиц.
Нужно просмотреть документ от начала и до конца и при встрече таблицы прочитать данные из 1 столбца 1 строки. Если там написано "Таблица", тогда
Нужно прочитать данные 2 столбца, с 3 строки и до конца таблицы.

Как это можно сделать?
Понимаю, что задача большая - буду рад любым примерам кода.


Пример рабочего кода
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
wdApp, wdDocs, wdDoc : Variant;
file_name:string;
temp_string:AnsiString;
begin

file_name:=ExtractFilePath( Application.ExeName )+'\test.doc';

//Пытаемся запустить MS Word и получить ссылку на объект Application.
//- Это корневой объект в объектной структуре MS Word.
try
wdApp := CreateOleObject('Word.Application');
except
ShowMessage('Не удалось запустить MS Word. Действие отменено.');
Exit;
end;
  
//Если требуется, делаем видимым окно MS Word.
wdApp.Visible := false;
//Ссылка на коллекцию документов.
wdDocs := wdApp.Documents;
//Попытка открыть выбранный файл и получить ссылку на объект документа.
wdDoc := wdDocs.Open(FileName:=file_name);

{	
CurTable:=ActiveDocument.Tables(1);
CurTable.Cell(10,20).Range.Text:=Text;
goto end_of_this;
}
	
//Читаем текст документа и записываем его в Мемо.
temp_string:=wdDoc.Range.Text;

//Закрываем MS Word.
wdApp.Quit;
  • Вопрос задан
  • 2556 просмотров
Решения вопроса 1
@kalapanga
Проблема-то в чём? Вот же у Вас пример. Таблицы образуют коллекцию Tables. Количество таблиц - .Tables.Count. Пишете цикл по таблицам и читайте из них на здоровье, что Вам нужно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Samson114
@Samson114
Программист-разработчик прикладного ПО и БД
Если вместо вот этого
CurTable:=ActiveDocument.Tables(1);
написать правильно, то всё наладится ))
CurTable:=ActiveDocument.Tables.Item(1);
Естественно, если в документе есть хоть одна таблица :-)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы