Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2010, 18:37   #1
lede88
 
Регистрация: 05.04.2010
Сообщений: 4
По умолчанию Из Stringgrid в Word.

У меня проблема. Знаю как вставить одну таблицу в Word из StringGrid.
Но не знаю как после вставить другую из другого Stringgrid.

Вот для одной таблицы:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  W, Table: Variant;
  Row, Col, i, j: Integer;
begin
  W := CreateOleObject('Word.Application');
  W.Documents.Add;
  W.ActiveDocument.Tables.Add(W.ActiveDocument.Range,
  StringGrid1.RowCount, StringGrid1.ColCount);
  Table := W.ActiveDocument.Tables.Item(1);
  Table.Style := 'Сетка таблицы';
  for i := 0 to StringGrid1.RowCount - 1 do
    for j := 0 to StringGrid1.ColCount - 1 do
      Table.Cell(i + 1, j + 1).Range.Text := StringGrid1.Cells[j, i];
  W.Visible := True;
end;

Пробовала так, не получается, выдает ошибку:

Код:
W.ActiveDocument.Tables.Add(W.ActiveDocument.Range,
  StringGrid1.RowCount, StringGrid1.ColCount);

  Table := W.ActiveDocument.Tables.Item(1);
  Table.Style := 'Сетка таблицы';
  for i := 0 to StringGrid1.RowCount - 1 do 
    for j := 0 to StringGrid1.ColCount - 1 do
      Table.Cell(i + 1, j + 1).Range.Text := StringGrid1.Cells[j, i];


  W.ActiveDocument.Tables.Add(W.ActiveDocument.Range,
  StringGrid2.RowCount, StringGrid2.ColCount);

  Table2 := W.ActiveDocument.Tables.Item(2);
  Table2.Style := 'Сетка таблицы';
  for i := 0 to StringGrid2.RowCount - 1 do
    for j := 0 to StringGrid2.ColCount - 1 do
      Table2.Cell(i + 1, j + 1).Range.Text := StringGrid2.Cells[j, i];

Пожалуйста, помогите, я чайник!

Последний раз редактировалось Stilet; 07.04.2010 в 07:32.
lede88 вне форума Ответить с цитированием
Старый 06.04.2010, 18:58   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Глянул поверхностно. По-моему, у тебя проблемы с Range... Этот параметр для документа нужно отслеживать....

В своей программе я добавляю таблицы и работаю с ними так:
Код:
              //добавляю таблицу для названия периода отчета...
              //открываю шаблон таблицы периода отчета...
              WordApp.Documents.Open(FileName:=ExeDir+SubGenDir+
                                             'HeaderPeriod.dot',ReadOnly:=true);
              WordApp.Selection.Start:=0;
              WordApp.Selection.End:=WordApp.ActiveDocument.Range.end-1;
              WordApp.Selection.Copy;
              Tbl_Length:=WordApp.ActiveDocument.Characters.Count;
              //закрываю шаблон таблицы периода отчета
              WordApp.ActiveDocument.Close;
              TxtEnd:=WordApp.ActiveDocument.Range.end-1;
              TxtStart:=TxtEnd;
              WordApp.Selection.Start:=TxtStart;
              WordApp.Selection.End:=TxtStart+Tbl_Length;
              WordApp.Selection.Paste;
              TxtEnd:=TxtStart+Tbl_Length;
              TxtStart:=TxtEnd;
              Table:=WordApp.ActiveDocument.Tables.Item(
                                           WordApp.ActiveDocument.Tables.Count);
              Table.Cell(1,1).Range.Text:=cmbData.Text;
Нужно отслеживать не Range, а конец документа...
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Stilet; 07.04.2010 в 07:34.
Grag вне форума Ответить с цитированием
Старый 07.04.2010, 07:29   #3
lede88
 
Регистрация: 05.04.2010
Сообщений: 4
По умолчанию

Спасибо!!

Но как привязать это к моему коду? не получается что-то у меня!

Вставляет вторую таблицу в первую((
lede88 вне форума Ответить с цитированием
Старый 07.04.2010, 10:32   #4
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Вот еще один пример того, как добавляется таблица в конец документа
Код:
procedure TForm1.Button3Click(Sender: TObject);
 var MyRange:variant;
begin
MyRange:=W.ActiveDocument.Range(W.ActiveDocument.Range.End-1,W.ActiveDocument.Range.End-1);
W.ActiveDocument.Tables.Add(Range:=MyRange,NumRows:=2,NumColumns:=3);
W.ActiveDocument.Range.InsertAfter(' ');
end;
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт из StringGrid в Word Polotenchik Общие вопросы Delphi 12 23.09.2011 23:22
Работать в Word, не открывая документы (работа с закрытыми документами Word) Георгиевич Microsoft Office Word 10 07.09.2009 11:19
Из StringGrid в Word artemavd Помощь студентам 0 26.04.2009 17:15
Как вычислять значения вне таблицы WORD, с использованием данных из таблицы WORD prikolist Microsoft Office Word 6 21.11.2008 13:17