Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 048

/ вопрос решён /

Здравствуйте, уважаемые эксперты! У меня на форме имеется TChart и TStringGrid(график уже построен,а таблица уже заполнена,график или графики построены соответственно по таблице).Мне бы сохранить таблицу,а под ней и график в вордовском документе.Помогите пожалуйста, подкинте код.

GAZ Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: 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!!!

Приложение:
  1. procedure TForm1.Bt_CreateWordFileClick(Sender: TObject);
  2. var i,j:integer;
  3. begin
  4. Bt_randomfillClick(Sender);
  5. with WordApp do
  6. begin
  7. ConnectKind:=ckRunningOrNew;
  8. AutoQuit:=false;
  9.  
  10.  
  11.  
  12. Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam);
  13.  
  14. ActiveDocument.Tables.AddOld(WordApp.ActiveDocument.Paragraphs.Item(1).Range,StGrid.RowCount,StGrid.ColCount);
  15.  
  16. with StGrid do
  17. for i:=0 to ColCount-1 do
  18. for j:=0 to RowCount-1 do
  19. ActiveDocument.Tables.Item(1).Cell(j+1,i+1).Range.Text:=Cells[i,j];
  20.  
  21. ActiveDocument.Range(EmptyParam,EmptyParam).Select;
  22. Selection.Start:=Selection.End_;
  23. {/-----------------------------------------------/}
  24.  
  25.  
  26.  
  27. end; {with WordApp}
  28. end;
  29.  


Ответ отправил: Николай Рубан (статус: 10-ый класс)
Время отправки: 30 октября 2007, 00:07
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: Feniks

Здравствуйте, GAZ!
В дополнении к «Николай Рубан».
Прочитайте еще статью на сайте "Работа с приложениями Microsoft Office".

Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 30 октября 2007, 14:37
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 2 ноября 2007, 21:34; участников в обсуждении: 2.
GAZ

GAZ (статус: Посетитель), 1 ноября 2007, 06:31 [#1]:

Вопрос Николаю Рубан
У Вас в приложении
.....
Bt_randomfillClick(Sender);
...... что это есть?
Николай Рубан

Николай Рубан (статус: 10-ый класс), 1 ноября 2007, 12:02 [#2]:

Это простая процедура, которая заполняет объект StringGrid произвольными числами.
Это я делал для автоматического заполнения таблицы данными - одним словом для проверки.
:)
GAZ

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)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:37
Выполнено за 0.03 сек.