|
Вопрос # 1 048/ вопрос решён / |
|
Здравствуйте, уважаемые эксперты! У меня на форме имеется TChart и TStringGrid(график уже построен,а таблица уже заполнена,график или графики построены соответственно по таблице).Мне бы сохранить таблицу,а под ней и график в вордовском документе.Помогите пожалуйста, подкинте код.
 |
Вопрос задал: GAZ (статус: Посетитель)
Вопрос отправлен: 29 октября 2007, 18:34
Состояние вопроса: решён, ответов: 2.
|
Ответ #1. Отвечает эксперт: Николай Рубан
Здравствуйте, GAZ!
Для решения Вашей задачи на форме я расположил такие компоненты:
WordApp: TWordApplication;
StGrid: TStringGrid;
Bt_CreateWordFile: TButton;
Chart1: TChart;
Вот непосредственно код программы (рекомендую Вам внимательно читать комментарии к соответствующим блокам):
{процедура создающая файл *.doc в котором размещает таблицу и рисунок}
procedure TForm1.Bt_CreateWordFileClick(Sender: TObject);
var i,j:integer;
begin
Bt_randomfillClick(Sender);
with WordApp do
begin
ConnectKind:=ckRunningOrNew;
AutoQuit:=false;
Options.CheckSpellingAsYouType:=true;//не проверяем синтаксис
Options.CheckGrammarAsYouType:=true; //не проверяем грамматику
Visible:=true; //видно ли Word
Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam);
{добавляем новую таблицу}
ActiveDocument.Tables.AddOld(WordApp.ActiveDocument.Paragraphs.Item(1).Range,StGrid.RowCount,StGrid.ColCount);
{заполняем таблицу данными из StringGrid-a}
with StGrid do
for i:=0 to ColCount-1 do
for j:=0 to RowCount-1 do
ActiveDocument.Tables.Item(1).Cell(j+1,i+1).Range.Text:=Cells[i,j];
{/------перемещаем курсор в конец документа------/}
ActiveDocument.Range(EmptyParam,EmptyParam).Select;
Selection.Start:=Selection.End_;
{/-----------------------------------------------/}
Chart1.CopyToClipboardBitmap; {копируем изображение Chart-а в буфер}
Selection.Paste; {вставляем рисунок из буфера в документ}
Disconnect; {разрываем соединение с Word-ом}
end; {with WordApp}
end;
Good Luck!!!
Приложение: Переключить в обычный режим- procedure TForm1.Bt_CreateWordFileClick(Sender: TObject);
- var i,j:integer;
- begin
- Bt_randomfillClick(Sender);
- with WordApp do
- begin
- ConnectKind:=ckRunningOrNew;
- AutoQuit:=false;
-
-
-
- Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam);
-
-
ActiveDocument.Tables.AddOld(WordApp.ActiveDocument.Paragraphs.Item(1).Range,StGrid.RowCount,StGrid.ColCount);
-
- with StGrid do
- for i:=0 to ColCount-1 do
- for j:=0 to RowCount-1 do
- ActiveDocument.Tables.Item(1).Cell(j+1,i+1).Range.Text:=Cells[i,j];
-
- ActiveDocument.Range(EmptyParam,EmptyParam).Select;
- Selection.Start:=Selection.End_;
- {/-----------------------------------------------/}
-
-
-
- end; {with WordApp}
- end;
-
 |
Ответ отправил: Николай Рубан (статус: 10-ый класс)
Время отправки: 30 октября 2007, 00:07
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: Feniks
Здравствуйте, GAZ!
В дополнении к «Николай Рубан».
Прочитайте еще статью на сайте "Работа с приложениями Microsoft Office".
 |
Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 30 октября 2007, 14:37
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 4; последнее сообщение — 2 ноября 2007, 21:34; участников в обсуждении: 2.
|
GAZ (статус: Посетитель), 1 ноября 2007, 06:31 [#1]:
Вопрос Николаю Рубан
У Вас в приложении
.....
Bt_randomfillClick(Sender);
...... что это есть?
|
|
Николай Рубан (статус: 10-ый класс), 1 ноября 2007, 12:02 [#2]:
Это простая процедура, которая заполняет объект StringGrid произвольными числами.
Это я делал для автоматического заполнения таблицы данными - одним словом для проверки.
|
|
GAZ (статус: Посетитель), 2 ноября 2007, 18:02 [#3]:
Вопрос Николаю Рубан:
Подскажите пожалуйста опцию в WordApplication для альбомного ориентирования вордовского документа.
|
|
Николай Рубан (статус: 10-ый класс), 2 ноября 2007, 21:34 [#4]:
Вам достаточно выполнить такую команду:
ActiveDocument.PageSetup.Orientation:=0; //для книжной ориентации (по умолчанию)
ActiveDocument.PageSetup.Orientation:=1; //для альбомной
|
31 января 2011, 19:29: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|