Форум: "Основная";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
Внизработа с 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c