Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
11 / 11 / 4
Регистрация: 17.06.2010
Сообщений: 438
1

Вывод данных в Word (перевод кода)

28.05.2015, 23:20. Показов 1769. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер. Нашел такую статейку по выводу выбранных полей из таблицы, но в Delphi, проверил работает нормально:
C++
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
 папке с программой создайте папку shablon для хранения шаблонов и папку output для хранения полученных документов. Запустите Microsoft Word, введите произвольный текст документа с именами #tab#, #fam#, #imya#, #datar#. Сохраните файл в папку shablon. При этом в поле тип файла укажите Шаблоны документа, а имя файла Anketa. Для формирования анкеты нанесите на форму кнопку Button (Standard). В свойстве Caption укажите Анкета.
Для работы с COM сервером подключите в коде модуля формы файл comobj.
Для кнопки напишите код вида:
 
//пытаемся подключиться к серверу Word
try
    w:=getactiveoleobject('word.application');
//если подключение не удачно, то запускаем Word
except
    w:=createoleobject('word.application');
end;
 
/*ЗДЕСЬ СДЕЛАЛ 
//пытаемся подключиться к серверу Word
Variant w;
try
   {
    w=GetActiveOleObject("word.application");
    }
//если подключение не удачно, то запускаем Word
catch (...)
{
    w=CreateOleObject("word.application");
} */
 
 
 
//А ВОТ ДАЛЬШЕ НЕ ЗНАЮ КАК ПРАВИЛЬНО НАПИСАТЬ
//создаем новый документ на основе шаблона
w.documents.add(extractfilepath(application.ExeName)+'shablon\anketa.dot');
//заменяем имя #tab# на значение поля tab
w.selection.find.text:='#tab#';
 
w.selection.find.replacement.text:=ztable1.FieldByName('tab').Value;
 
w.selection.find.execute(replace:=2);
 
//заменяем имя #fam# на значение поля fam
 
w.selection.find.text:='#fam#';
 
w.selection.find.replacement.text:=ztable1.FieldByName('fam').Value;
 
w.selection.find.execute(replace:=2);
 
//заменяем имя #imya# на значение поля imya
 
w.selection.find.text:='#imya#';
 
w.selection.find.replacement.text:=ztable1.FieldByName('imya').Value;
 
w.selection.find.execute(replace:=2);
 
 
//заменяем имя #datar# на значение поля datar
 
w.selection.find.text:='#datar#';
 
w.selection.find.replacement.text:=ztable1.FieldByName('datar').Value;
 
w.selection.find.execute(replace:=2);
 
 
//сохраняем документ 
 
w.activedocument.saveas(filename:=extractfilepath(application.ExeName)+'output\anketa.doc');
 
//делаем видимым окно Word
 
w.visible:=true;
 
 
Полученный документ будет находится в папке output под именем anketa.doc.
Подскажит пожалуйста как правильно написать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.05.2015, 23:20
Ответы с готовыми решениями:

Работа с редактором кода VBA. Вывод данных в WORD
Дана матрица А(n,m). Найти максимумы в каждой строке и вывести массив квадратов этих элементов....

Вывод штрих-кода на листе MS Word
Добрый день! Подскажите, необходимо на форме Ворда выводить штрих-код. Никак у меня это не...

Сортировка значений в базе данных Access (перевод кода с C#)
У меня имеется код на c#, который обеспечивал сортировку значений по базе данных Access, а именно...

Вывод данных в word
Добрый день. Существует проблема следующего характера: необходимо создать отчет в word, таким...

5
Модератор
3386 / 2158 / 352
Регистрация: 13.01.2012
Сообщений: 8,375
29.05.2015, 09:50 2
Цитата Сообщение от TYMON Посмотреть сообщение
Подскажит пожалуйста как правильно написать?
как правильно написать на C++?
0
11 / 11 / 4
Регистрация: 17.06.2010
Сообщений: 438
29.05.2015, 10:07  [ТС] 3
Да для Билдера
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
29.05.2015, 11:22 4
Лучший ответ Сообщение было отмечено TYMON как решение

Решение

TYMON,
C++
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
    // пытаемся подключиться к серверу Word
    Variant w;
    try
    {
        w = GetActiveOleObject("word.application");
    }
    // если подключение не удачно, то запускаем Word
    catch (...)
    {
        w = CreateOleObject("word.application");
    }
 
    // создаем новый документ на основе шаблона
    w.OlePropertyGet("Documents").OleProcedure("Add",
        StringToOleStr(ExtractFilePath(Application->ExeName) + "shablon\\anketa.dot"));
 
    // заменяем имя #tab# на значение поля tab
    // берешь данные откуда тебе нужно, из БД или еще откуда
    String sReplace = "myTab";
    w.OlePropertyGet("Selection").OlePropertyGet("Find").OleProcedure("Execute",
        WideString("#tab#"), true, true, false, false, false, true, 1, false,
        WideString(sReplace), 2);
 
    // это все - по аналогии
 
    // заменяем имя #fam# на значение поля fam
    // заменяем имя #imya# на значение поля imya
    // заменяем имя #datar# на значение поля datar
 
    // сохраняем документ
    w.OlePropertyGet("ActiveDocument").OleProcedure("SaveAs",
        StringToOleStr(ExtractFilePath(Application->ExeName) + "output\\anketa.doc"));
 
    // делаем видимым окно Word
    w.OlePropertySet("Visible", true);
2
11 / 11 / 4
Регистрация: 17.06.2010
Сообщений: 438
30.05.2015, 13:30  [ТС] 5
volvo, Спасибо большое)
0
11 / 11 / 4
Регистрация: 17.06.2010
Сообщений: 438
09.06.2015, 23:56  [ТС] 6
Вопрос а как сделать если у меня ничего не содержит? потому как шаблон содержит например #opit#, а в базе это пусто поле
0
09.06.2015, 23:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2015, 23:56
Помогаю со студенческими работами здесь

Вывод данных в word
какой код прописать, что бы когда вводишь данные для визитных карточек, эти данные выводились в...

C# вывод данных в Word
Файл находится в папке Debug и всё работает нормально только на моем компьютере. При переносе...

Вывод данных в Word
Всем доброго времени суток! Тема стара как мир, пересмотрела кучу ссылок, но все равно работает не...

Вывод данных в Word
Господа программисты, посоветуйте пожалуйста литературу, подробно-описывающую вывод информации из...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru