Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Delphi
Перезагрузить страницу Как организовать и работать с поиском в таблицах word
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Light241 Light241 вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.07.2009
Thumbs down Как организовать и работать с поиском в таблицах word - 21.07.2009, 10:12

Здравствуйте. Вопрос по работе с таблицами word.

Есть шаблон ворда, необходимо найти в этом шаблоне ключевое слово в этом месте добавить определенное количество строк и заполнить ячейки значениями из массивов.

Написал универсальную функцию:

Код:
type
function FillTab(marker:string; s1:array of string; s2:array of string; s3:array of string; s4:array of string; s5:array of string):boolean;

...

function TForm1.FillTab(marker:string; s1:array of string; s2:array of string; s3:array of string; s4:array of string; s5:array of string):boolean;
var
tcount, RowCount, ColCount, i, j, z, k, del:integer;
begin
FillTab:=True;
MsWord.Selection.End:=0; //переход в начало страницы
MsWord.Selection.Start:=0;
try
tcount:=MsWord.ActiveDocument.Tables.Count;//Общее число таблиц в документе
  for i := 1 to tcount do //цикл обход по таблицам
  begin
  RowCount:=MsWord.ActiveDocument.Tables.Item(i).Rows.Count; //количество строк в таблице
    for j := 1 to RowCount  do    //цикл поиск маркера по строкам
    begin
    ColCount:=MsWord.ActiveDocument.Tables.Item(i).Columns.Count; //количество столбцов в таблице
      for k := 1 to ColCount do    //цикл поиск маркера столбцам
      begin

//!!!!на этом if-е программа выдает не критическую ошибку и цикл перебора прерывается. Видимо это связвно с тем, что он не может обрптиться к данной ячейке(возможно с таким номером ячейки не существует, так как в таблицемнрого ячеек объединенных по вертикали)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        if trim(MsWord.ActiveDocument.Tables.Item(i).Cell(j,k).Range.Text)=marker then
        begin
          for z:=0 to length(s1)-3 do   //цикл вставки пустых строк
          begin
           MsWord.ActiveDocument.Tables.Item(i).Rows.Add(MsWord.ActiveDocument.Tables.Item(
i).Cell(j+z+1,1));
          end;//for z добавляем строки
          for z:=0 to length(s1)-1 do   //цикл перебора и вставки значений (отдельный фор для того чтоб не создавалось лишних строк)
          begin
           if length(s1)>0 then MsWord.ActiveDocument.Tables.Item(i).Cell(j+z,1).Range.Text:=s1[z];
           if length(s2)>0 then MsWord.ActiveDocument.Tables.Item(i).Cell(j+z,2).Range.Text:=s2[z];
           if length(s3)>0 then MsWord.ActiveDocument.Tables.Item(i).Cell(j+z,3).Range.Text:=s3[z];
           if length(s4)>0 then MsWord.ActiveDocument.Tables.Item(i).Cell(j+z,4).Range.Text:=s4[z];
           if length(s5)>0 then MsWord.ActiveDocument.Tables.Item(i).Cell(j+z,5).Range.Text:=s5[z];
          end;//for z значения   
        end;//if
      end; //for k столбцы
    end;//for j строки
  end;//for i таблицы
except
//
end;//try
end;
//End FillTab////////////////////////////////////////////////////////////////////

...

procedure TForm1.RunButtonClick(Sender: TObject);
var
i:integer;
begin
Setlength(Content.NPP,6);
Setlength(Content.Razdel,6);
Setlength(Content.PageN,6);
  for I := 0 to 5 do
  begin
  Content.NPP[i]:=IntToStr(i);
  Content.Razdel[i]:=IntToStr(i+1);
  Content.PageN[i]:=IntToStr(i+2);
  end;

//вызов функции
FillTab('#R3_2#', Content.NPP, Content.Razdel, Content.PageN, Content.NPP, Content.Razdel);  
end;

Видимо из за наличия объединенных по вертикали ячеек программа не может обратиться по указанному адресу ячейки.
Вопрос: как найти текст в таблице, добавить на его место новые строки и заполнить их знгачениями. Возможно есть какой то другой способ обратиться к таблице и ее строкам, кроме прямого перебора.
Если нет, то как поступать с ячейками объединенными по вертикали, чтоб не выдавало ошибку.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с поиском д-ра на АТИ. Kharti Драйвера 5 09.07.2011 20:14
Фильтрация в таблицах как реализовать Fokus Delphi 5 20.01.2011 11:28
Объединение ячеек в таблицах Excel sharovia C++ Builder 3 23.01.2007 16:38
Создание связей в таблицах в Access fractal Вопросы начинающих программистов 0 22.11.2006 07:47
Как в программе организовать pField, если работать с DAO в VC++6.0 BD Visual C++ 0 20.09.2006 17:43
Шифрование данных в таблицах TOPT Delphi 3 07.02.2006 19:16
C++ Builder feet MS Word работа с документами Word samogon C++ Builder 0 20.10.2005 16:04
Работа с Word в CB6 где найти инструкцию как работать Spider_Den C++ Builder 0 11.06.2004 11:06
Удаление связаных записей в таблицах посредством SQL Leon C++ Builder 4 06.04.2004 12:08
Как при помощи стандартных компонентов BDE получить имена ключей в таблицах ODBC-баз Anonymous C++ Builder 17 09.01.2004 12:54
Как сделать чтобы после завершения программы Word продолжал работать Anonymous C++ Builder 0 16.04.2003 16:35
Как работать с Word.Application Anonymous ASP 1 11.04.2003 14:32



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов