![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Имеется двумерный массив "mass" типа string. В нём "a" столбцов и "b" строк. Как сделать так, чтобы по нажатию на одну кнопку выполнялись следующие действия:
1) открывался новый документ Microsoft Word (новый - то есть чистый, ещё нигде не сохранённый) 2) в нём создавалась таблица с "a" столбцами и "b" строками, в которую вставились бы данные из массива "mass". 3) убрать привязку программы к этому документу, но документ должен остаться открытым. Уважаемые специалисты, буду очень признателен за код с комментариями. |
|
#2
|
||||
|
||||
|
Код:
uses ComObj;
procedure TForm1.Button1Click(Sender: TObject);
var
W: Variant;
i,j: Integer;
begin
try
W:= CreateOleObject('Word.Application');
Except
MessageBox(Application.Handle,'Неудалось создать документ.',
'Ошибка.',MB_OK + MB_ICONWARNING);
end;
W.Visible:= True; //Показать документ.
W.Documents.Add; //Новый
W.Selection.Font.Size:= 14; //Размер шрифта
W.ActiveDocument.PageSetup.TopMargin:= 15; //Отступы от краёв.
W.ActiveDocument.PageSetup.LeftMargin:= 15;
W.ActiveDocument.PageSetup.RightMargin:= 15;
W.ActiveDocument.PageSetup.BottomMargin:= 15;
W.Selection.ParagraphFormat.Alignment:= 1; //Выровнять по центру ячейки.
W.ActiveDocument.Tables.Add(W.ActiveDocument.Range(0,0),5,8); //Таблица 5х8
W.ActiveDocument.Tables.Item(1).TopPadding:=3; //Отступы таблицы.
W.ActiveDocument.Tables.Item(1).BottomPadding:=3;
W.ActiveDocument.Tables.Item(1).RightPadding:=3;
W.ActiveDocument.Tables.Item(1).LeftPadding:=3;
W.ActiveDocument.Tables.Item(1).Columns.Item(1).Width:=70; //ширина
W.ActiveDocument.Tables.Item(1).Columns.Item(2).Width:=70;//столбцов
W.ActiveDocument.Tables.Item(1).Columns.Item(3).Width:=70;
W.ActiveDocument.Tables.Item(1).Columns.Item(4).Width:=70;
W.ActiveDocument.Tables.Item(1).Columns.Item(5).Width:=70;
W.ActiveDocument.Tables.Item(1).Columns.Item(6).Width:=70;
W.ActiveDocument.Tables.Item(1).Columns.Item(7).Width:=70;
W.ActiveDocument.Tables.Item(1).Columns.Item(8).Width:=70;
For i:= 1 To 5 Do
For j:= 1 To 8 Do //Заполнение табл.
W.ActiveDocument.Tables.Item(1).Cell(i,j).Range.Text:= IntToStr(i*j);
W.ActiveDocument.SaveAs('C:\Отчёт.doc'); //Путь сохранения.
W.Activedocument.Close; //закрыть документ.
W.Application.Quit; //Закрыть WORD.
end; |