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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2018, 11:30   #1
kostya_hor
Пользователь
 
Регистрация: 23.05.2018
Сообщений: 58
По умолчанию Вывод StringGrid в Word

я пытаюсь вывести StringGrid в Word ,а у меня что-то не выходит
Запускается нормально,но как нажимаю кнопку чтобы вывести то показывает,что ошибка здесь
Код:
W.ActiveDocument.Tables.Item(1).Cell(i+1,j+1).Range.Text:=stringgrid1.cells[j,i];
Код:
procedure TForm4.Button2Click(Sender: TObject);
const m=6;
      n=9;

var W:variant;
MyRange:variant;
i,j:integer;
begin
W:=CreateOleObject('Word.Application');  
W.visible:=true; 
W.Documents.Add;  
W.ActiveDocument.Range.InsertAfter('Начальная матрица ');
MyRange:=W.ActiveDocument.Range(W.ActiveDocument.Range.End-1,
W.ActiveDocument.Range.End-1);

W.ActiveDocument.Tables.Add(Range:=MyRange,NumRows:=m,NumColumns:=n);
for i:=0 to m-1 do
for j:=0 to n-1 do
W.ActiveDocument.Tables.Item(1).Cell(i+1,j+1).Range.Text:=stringgrid1.cells[j,i];
W.ActiveDocument.Range.InsertAfter('Матрица после перестановки');

MyRange:=W.ActiveDocument.Range(W.ActiveDocument.Range.End-1,
W.ActiveDocument.Range.End-1);
W.ActiveDocument.Tables.Add(Range:=MyRange,NumRows:=m,NumColumns:=n);
for i:=0 to m-1 do
for j:=0 to n-1 do
begin
W.ActiveDocument.Tables.Item(2).Cell(i+1,j+1).Range.Text:=stringgrid2.cells[j,i];

end;

W.ActiveDocument.SaveAs('Отчет',ReadOnlyRecommended:=true); 
{W.ActiveDocument.Close;
W.Quit;
W:=UnAssigned;}
end;
kostya_hor вне форума Ответить с цитированием
Старый 28.05.2018, 12:04   #2
kostya_hor
Пользователь
 
Регистрация: 23.05.2018
Сообщений: 58
По умолчанию

Вот код чтобы выводило одну таблицу,но как вывести сразу две?((

Код:
var
  W, Table: Variant;
 i, j: Integer;
begin
  W := CreateOleObject('Word.Application');
  W.Documents.Add;
  W.ActiveDocument.Tables.Add(W.ActiveDocument.Range,
  StringGrid2.RowCount, StringGrid2.ColCount);
    W.ActiveDocument.Range.InsertAfter('Матрица после перестановки');
  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 := StringGrid2.Cells[j, i];
  W.Visible := True;
kostya_hor вне форума Ответить с цитированием
Старый 28.05.2018, 15:46   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

так устроит?

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  W, Table, Range, Range2: OleVariant;
 i, j: Integer;
begin
  W := CreateOleObject('Word.Application');
  W.Visible := True;
  W.Documents.Add;
  Range := W.ActiveDocument.Range;
  Range.InsertAfter('       '#13);
  Range2 := W.ActiveDocument.Range(3,4);
  W.ActiveDocument.Tables.Add(Range2,  StringGrid1.RowCount, StringGrid1.ColCount);
  Table := W.ActiveDocument.Tables.Item(1);
  Table.Style := 'Сетка таблицы';
  for i := 0 to StringGrid2.RowCount - 1 do
    for j := 0 to StringGrid2.ColCount - 1 do
      Table.Cell(i + 1, j + 1).Range.Text := StringGrid2.Cells[j, i];
  Range2.InsertBefore('Матрица после перестановки');

  Range2 := W.ActiveDocument.Range(1,2);
  W.ActiveDocument.Tables.Add(Range2,  StringGrid1.RowCount, StringGrid1.ColCount);
  Table := W.ActiveDocument.Tables.Item(1);
  Table.Style := 'Сетка таблицы';
  Range2.InsertAfter('Матрица до перестановки');
  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];
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.05.2018, 21:25   #4
kostya_hor
Пользователь
 
Регистрация: 23.05.2018
Сообщений: 58
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
так устроит?
Запускается нормально,но когда нажимаю на кнопку чтобы вывести показывает что тут ошибка,но ворд открывается и там ток одна таблица

Код:
  Range2 := W.ActiveDocument.Range(1,2);
kostya_hor вне форума Ответить с цитированием
Старый 28.05.2018, 21:44   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

не знаю, у меня всё сработало.

покажите полностью код, который у Вас на кнопку назначен.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.05.2018, 21:50   #6
kostya_hor
Пользователь
 
Регистрация: 23.05.2018
Сообщений: 58
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не знаю, у меня всё сработало.

покажите полностью код, который у Вас на кнопку назначен.
Код:
rocedure TForm4.Button2Click(Sender: TObject);
var
  W, Table, Range, Range2: OleVariant;
 i, j: Integer;
begin
  W := CreateOleObject('Word.Application');
  W.Visible := True;
  W.Documents.Add;
  Range := W.ActiveDocument.Range;
  Range.InsertAfter('       '#13);
  Range2 := W.ActiveDocument.Range(3,4);
  W.ActiveDocument.Tables.Add(Range2,  StringGrid1.RowCount, StringGrid1.ColCount);
  Table := W.ActiveDocument.Tables.Item(1);
  Table.Style := 'Сетка таблицы';
  for i := 0 to StringGrid2.RowCount - 1 do
    for j := 0 to StringGrid2.ColCount - 1 do
      Table.Cell(i + 1, j + 1).Range.Text := StringGrid2.Cells[j, i];
  Range2.InsertBefore('Матрица после перестановки');

  Range2 := W.ActiveDocument.Range(1,2);
  W.ActiveDocument.Tables.Add(Range2,  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];
      Range2.InsertAfter('Матрица до перестановки');
end;
ComObj обьявлен
kostya_hor вне форума Ответить с цитированием
Старый 28.05.2018, 22:49   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

да, всё так.
у меня этот же код работает:
msword2.jpg

версия офиса у меня такая:
msword1.png

Не знаю, чем Вам помочь.

А какая хоть ошибка возникает?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.05.2018, 23:33   #8
kostya_hor
Пользователь
 
Регистрация: 23.05.2018
Сообщений: 58
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
А какая хоть ошибка возникает?
вот такая
Изображения
Тип файла: jpg Безымянный.jpg (70.4 Кб, 111 просмотров)
Тип файла: png Безымя333нный.png (23.8 Кб, 119 просмотров)
kostya_hor вне форума Ответить с цитированием
Старый 28.05.2018, 23:36   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от kostya_hor Посмотреть сообщение
вот такая
сбой активации продукта?!! o_O!

так, чисто по приколу.
попробуйте заменить строчку
Цитата:
Сообщение от kostya_hor Посмотреть сообщение
Код:
Range.InsertAfter('       '#13);
на строчку
Код:
Range.InsertAfter('------');
и покажите скриншот, что у Вас получается после такой замены.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.05.2018, 23:51   #10
kostya_hor
Пользователь
 
Регистрация: 23.05.2018
Сообщений: 58
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
сбой активации продукта?!! o_O!
просто я не активировал ворд,то не страшно.Нету времени чтобы крякнуть его

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
и покажите скриншот, что у Вас получается после такой замены.
Все та же ошибка ток в ворде появились" ------ "
Изображения
Тип файла: jpg Безымян111111111111111111111ный.jpg (71.9 Кб, 114 просмотров)
Тип файла: png Безымя333нный.png (23.8 Кб, 119 просмотров)
kostya_hor вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод таблицы из MS Word в StringGrid artyr_95 Общие вопросы Delphi 1 02.06.2015 01:36
Вывод данных в word-документ с помощью interop.word Joose Общие вопросы .NET 2 22.05.2015 19:17
Из Stringgrid в Word. lede88 Общие вопросы Delphi 3 07.04.2010 10:32
Из StringGrid в Word artemavd Помощь студентам 0 26.04.2009 17:15