Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/49: Рейтинг темы: голосов - 49, средняя оценка - 4.76
7 / 7 / 0
Регистрация: 13.01.2010
Сообщений: 67

Отчет в Word

13.09.2011, 18:19. Показов 9177. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица. Нужно вывести отчет в файл MsWord. Подключаю библиотеку comobj.

Создаю файл для отчета (файл создается по шаблону):
Delphi
1
2
wordapp:=createoleobject('Word.Application');
Wordapp.Documents.add(extractFilePath(application.ExeName)+'ОТЧЕТЫ\fio.dot');
Вывожу данные в файл:
Delphi
1
2
3
4
5
wordapp.selection.goto(-1,unassigned,unAssigned,'fio'); //переходу к закладке
for i := 0 to adoquery2.RecordCount do
begin
wordapp.selection.typetext(adoquery2.Fieldbyname('Fio').AsString);
adoquery2.Next;
Но, таким образом все имена у меня будут писаться в файле подряд. Вопрос - как перейти на новую строчку? Пробовал параграф и movedown(1), выдавало ошибку.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.09.2011, 18:19
Ответы с готовыми решениями:

Отчет в Word
Добрый день. Помогите, пожалуйста!!! Как вывести такой отчет в Word: у меня есть таблица Учет с полями наименование техники,...

Отчет в word, прорисовка линий
Подскажите пожалуйста функцию для прорисовки линий в таблице при отчете в word. Таблицу я сформировал, как мне теперь сделать чтобы поля...

Отчет на основе базы данных в word
Построить простенький отчет в Word из Delphi. Спасибо

2
 Аватар для sharky123
47 / 47 / 5
Регистрация: 02.03.2010
Сообщений: 119
13.09.2011, 22:46
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
procedure Tfrm_Param_Obrabotki.PrintGrid;   //Журнал
var
     i,j: Integer;
     Wrd, Table, vName : OleVariant; //Для Ворда
begin
   vName:= 'table'; //Имя закладки в документе
 
   set_.Parameters.ParamByName('DateStart').Value:= StrToDate(dateStart.Text);
   set_.Parameters.ParamByName('DateEnd').Value:= StrToDate(dateEnd.Text);
   set_.Parameters.ParamByName('otd').Value:= cbbOtdelComboEh.Value;
 
        if cbbOtdelComboEh.Text > '' then    
        begin
          set_.CommandText:= 'SELECT Npr, FAM, Vozr, HOS, otd, Dat, nat, osn FROM Proto'+
              'WHERE otd = :otd AND Dat BETWEEN :DateStart AND :DateEnd ORDER BY Npr';
          grid.DataSource:= ds_Jurnr;
          set_.Active:= true;
 
        end;     
 
 try
  try
    try
   //Создаем из шаблона отчёт
   Wrd := CreateOleObject('Word.Application');
   except
     ShowMessage('Невозможно запустить MS Word!'+#13#10+'Проверьте, установлен ли он');
   end;
 
   Wrd.Visible:= True;
   Wrd.Documents.Add(ExtractFilePath(ParamStr(0))+'reports\shabl\jurn.dot');
 
   //Отключаем орфографию
   Wrd.Options.CheckSpellingAsYouType:=False;
   Wrd.Options.CheckGrammarAsYouType:=False;
 
   Wrd.ActiveDocument.Bookmarks.Item('date1').Range.Text:= dateStart.Text; //пишем даты в закладки
   Wrd.ActiveDocument.Bookmarks.Item('date2').Range.Text:= dateEnd.Text;
 
   Wrd.Selection.GoTo(wdGoToBookmark, emptyParam, emptyParam, vName);// переход на закладку
   Wrd.ActiveDocument.Bookmarks.Item(vName).Range.select; // Выделение закладки
   Wrd.ActiveDocument.Tables.Add(Wrd.selection.range,grid.DataSource.DataSet.RecordCount, grid.DataSource.DataSet.FieldCount); // Добавление таблицы в нужное место документа (закладку)
 
   Table:= Wrd.ActiveDocument.Tables.Item(1);
 
   //отображаем сетку
   Table.style:='Сетка таблицы';
 
   grid.DataSource.DataSet.First; //Начинаем перебор всех записей
 
// Заполняем таблицу
   for i:= 0 to grid.DataSource.DataSet.RecordCount-1 do
    begin
        for j:= 0 to grid.DataSource.DataSet.FieldCount-1 d
      
          Table.Cell(i+1,j+1).Range.InsertBefore(grid.DataSource.DataSet.Fields[j].AsString);   
          grid.DataSource.DataSet.Next;
    end;
 
   Table.Cell(1,1).Select;  // Выделить первую ячейку таблицы
   Wrd.Selection.InsertRowsAbove(1);   // Добавляем строку выше
   // Заголовки ячеек
   Table.Cell(1,1).Range.Text := 'Имя колонки 1';
   Table.Cell(1,2).Range.Text := 'Имя колонки 2';
   Table.Cell(1,3).Range.Text := 'Имя колонки 3';
   Table.Cell(1,4).Range.Text := 'Имя колонки 4';
   Table.Cell(1,5).Range.Text := 'Имя колонки 5';
   Table.Cell(1,6).Range.Text := 'Имя колонки 6';
   Table.Cell(1,7).Range.Text := 'Имя колонки 7';
   Table.Cell(1,8).Range.Text := 'Имя колонки 8';
 
   //Форматирование
   Wrd.ActiveDocument.Tables.Item(1).Cell(1,1).Range.Paragraphs.Alignment := wdAlignParagraphCenter;  //Центрирование
   Wrd.ActiveDocument.Tables.Item(1).Cell(1,2).Range.Paragraphs.Alignment := wdAlignParagraphCenter;
   Wrd.ActiveDocument.Tables.Item(1).Cell(1,3).Range.Paragraphs.Alignment := wdAlignParagraphCenter;
   Wrd.ActiveDocument.Tables.Item(1).Cell(1,4).Range.Paragraphs.Alignment := wdAlignParagraphCenter;
   Wrd.ActiveDocument.Tables.Item(1).Cell(1,5).Range.Paragraphs.Alignment := wdAlignParagraphCenter;
   Wrd.ActiveDocument.Tables.Item(1).Cell(1,6).Range.Paragraphs.Alignment := wdAlignParagraphCenter;
   Wrd.ActiveDocument.Tables.Item(1).Cell(1,7).Range.Paragraphs.Alignment := wdAlignParagraphCenter;
   Wrd.ActiveDocument.Tables.Item(1).Cell(1,8).Range.Paragraphs.Alignment := wdAlignParagraphCenter;
   Wrd.ActiveDocument.Tables.Item(1).Rows.AllowBreakAcrossPages := True;
   Wrd.Selection.Range.Cells.VerticalAlignment := wdCellAlignVerticalCenter;      //Центрирование ячейки
   Table.Cell(1,2).Select;
   Wrd.Selection.Range.Cells.VerticalAlignment := wdCellAlignVerticalCenter;
   Table.Cell(1,3).Select;
   Wrd.Selection.Range.Cells.VerticalAlignment := wdCellAlignVerticalCenter;
   Table.Cell(1,4).Select;
   Wrd.Selection.Range.Cells.VerticalAlignment := wdCellAlignVerticalCenter;
   Table.Cell(1,5).Select;
   Wrd.Selection.Range.Cells.VerticalAlignment := wdCellAlignVerticalCenter;
   Table.Cell(1,6).Select;
   Wrd.Selection.Range.Cells.VerticalAlignment := wdCellAlignVerticalCenter;
   Table.Cell(1,7).Select;
   Wrd.Selection.Range.Cells.VerticalAlignment := wdCellAlignVerticalCenter;
   Table.Cell(1,8).Select;
   Wrd.Selection.Range.Cells.VerticalAlignment := wdCellAlignVerticalCenter;
   Wrd.Selection.Tables.Item(1).AutoFitBehavior(wdAutoFitContent); //Выравнивание по содержимому
 
 
  except
    ShowMessage('Нет данных, удовлетворяющих запросу'+#13#10+
    'Закройте Word и продолжите работу');
 
  end;
 
 finally
  set_.Active:= False;
 end;
 
end;

Этот код печатает содержимое датасета в Ворд в виде таблицы
Думаю разберешься))

Добавлено через 5 минут
Почитай эту книгу, будет очень полезна
"Корняков В. Н. - Программирование документов и приложений MS Office в Delphi"
5
0 / 0 / 0
Регистрация: 05.03.2015
Сообщений: 5
07.03.2015, 10:34
народ, а вот у меня ругается на set говорит неизвестный идентификатор, что делать?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.03.2015, 10:34
Помогаю со студенческими работами здесь

Как оформить отчет в excel и word?
нужны характеристики например: объединение ячеек, выставление по центру, (создание таблицы если таковое бывает - чтоб данные были в таблице...

Не формируется отчет в Word из Delphi
Программа работает. Запускает документ, но в него вносится всего одна строка "Отчет" , а затем выдает ошибку "Вызов...

Отчет в Word'e
Здравствуйте. Возникла проблема следующего характера: вывожу в word переменные типа AnsiString. После сохранения документа и его открытия к...

Отчет в Word
Привет дайте пожалуйста если можете готовый любой Ole отчет в Word. Ли помогите с кодом. ...

word отчет
Здравствуйте я новенький тут ) вообщем дела такое, замучался гуглить) делою заполнение word. документа спомощью text box, используя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru