Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.27;
Скачать: CL | DM;

Вниз

работа с Word через OLE   Найти похожие ветки 

 
Sergey SP ©   (2003-10-14 13:40) [0]

Имеется документ в формате rtf, в нем данные представлены в виде таблицы которая состоит из рамок с текстом (TextFrame).
Необходимо перебрать все эти "ячейки" и получить из них текст.
Кто-нибудь подскажет как это сделать? Пробовал через Frames и через TextFrames, что-то ничего не получается...


 
BOA_KAA ©   (2003-10-14 13:51) [1]

А если ActiveDocument.Tables и далее?


 
Sergey SP ©   (2003-10-14 14:56) [2]

Так таблицы как таковой нет (в понятии Word"a), все из таких рамок слеплено...


 
nstur   (2003-10-14 15:20) [3]

Даю пример из компонента ( http://www.nstur.narod.ru/Delphi/index.html)
Смысл метода: ищет текст находящийся между символами указанными в ReplaceString (например |) и возвращает программе по событию, а там делай что хочешь.
procedure TNsWord.ExecuteReplace;
var
V: OleVariant;
ReplaceOk: boolean;
FindText, ReplaceText: string;
k: integer;
begin
if OpenedDocument then begin
with {Application.ActiveDocument}NsDocument.Application.Selection do begin
Find.ClearFormatting;
Find.Text:= ReplaceString[integer(ReplaceStyle)];
Find.Forward:= True;
Find.Wrap:= wdFindContinue;
Find.Format:= False;
Find.MatchCase:= False;
Find.MatchWholeWord:= False;
Find.MatchWildcards:= True;
Find.MatchSoundsLike:= False;
Find.MatchAllWordForms:= False;
repeat
OleVariant(Find).Execute;
{}
if Find.Found then begin
ReplaceOk:= False;
FindText:= Text;
if Length(FindText) > 2 then
FindText:= System.copy(FindText,2,Length(FindText)-2);
ReplaceText:= FindText;

if Assigned(FOnLocalReplace) then
FOnLocalReplace(ReplaceText);

ReplaceOk:= (ReplaceText <> FindText);
if NOT ReplaceOk then
if OtherEvents.Count > 0 then
for k:= 0 to pred(OtherEvents.Count) do
if AnsiUpperCase(FindText) = AnsiUpperCase(OtherEvents[k].Text) then
if Assigned(OtherEvents[k].FOnLocalReplace) then
OtherEvents[k].FOnLocalReplace(ReplaceText);

ReplaceOk:= (ReplaceText <> FindText);

if ReplaceOk then
Text:= ReplaceText;
end;//if
{}
if Find.Forward then begin
V:= wdCollapseEnd;
Collapse(V);
end
else begin
V:= wdCollapseStart;
Collapse(V);
end;
until NOT Find.Found;
EndDocument;
end;
end;
end;


 
Prima ©   (2003-10-14 15:20) [4]

TO Sergey SP © (14.10.03 14:56) [2]
Ага и на рамках этих данные написаны...


 
Sergey SP ©   (2003-10-14 15:42) [5]

Почему на рамках, внутри...
А таблица в моем понимании нечто целое, а не набор отдельно стоящих рамок, которые не образуют строк и столбцов к которым можно обратиться



Страницы: 1 вся ветка

Текущий архив: 2003.10.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
1-89332
rel_
2003-10-16 15:31
2003.10.27
Работа со строкой


1-89234
Egor
2003-10-14 17:48
2003.10.27
Delphi && Microsoft Word


1-89357
AlexeyN
2003-10-16 09:20
2003.10.27
EnumForms - sample.


14-89468
mudilo
2003-10-03 08:24
2003.10.27
Help Help BUGS


1-89360
hedgehock
2003-10-16 07:07
2003.10.27
Не могу поставить защиту на лист в Excel