11 / 11 / 4
Регистрация: 17.06.2010
Сообщений: 438
1

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

28.05.2015, 23:20. Показов 1840. Ответов 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.05.2015, 23:20
Ответы с готовыми решениями:

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

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

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

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

5
Модератор
 Аватар для vxg
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,425
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
 Аватар для volvo
33028 / 21328 / 8190
Регистрация: 22.10.2011
Сообщений: 36,638
Записей в блоге: 9
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
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2015, 23:56
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Преобразование полей (элементов управления содержимым) в обычный текст
РоΜа 23.01.2025
Возникла необходимость преобразовать поля в текст (те, что на вкладке разработчик добавляются) . Помучившись родил следующее: Sub ПоляВТекст() Преобразует все поля в текст (даты, текст,. . .
Как проверить существование директории в скрипте Bash
bt_guru 23.01.2025
При разработке скриптов Bash одной из ключевых задач является корректная работа с файловой системой, где особое место занимает проверка существования директорий. Эта операция становится критически. . .
Как работают срезы (slice) в Python
bytestream 23.01.2025
Python предоставляет разработчикам мощный и гибкий инструмент для работы с последовательностями данных - срезы (slices). Эта функциональность позволяет извлекать, модифицировать и управлять. . .
Как удалить подмодуль (submodule) в Git
bytestream 23.01.2025
При работе с крупными проектами в системе контроля версий Git разработчики часто сталкиваются с необходимостью управления зависимостями и внешними компонентами. Подмодули (submodules) представляют. . .
В чем разница между @staticmethod и @classmethod в Python. Декораторы методов
bytestream 23.01.2025
В Python декораторы методов представляют собой мощный инструмент, позволяющий модифицировать поведение функций и методов без изменения их исходного кода. Эта возможность является одной из. . .
Как преобразовать InputStream в String в Java
bytestream 23.01.2025
В мире Java-разработки работа с потоками данных является одной из ключевых операций при создании современных приложений. InputStream, как фундаментальный класс для обработки входных потоков данных,. . .
Как обновить форк (ответвление) репозитория в Git
bytestream 23.01.2025
Одним из наиболее мощных инструментов Git для организации совместной работы является механизм форкинга репозиториев, который позволяет создавать независимые копии проектов для дальнейшей разработки. . . .
Как работает async/await в C#. Асинхронное программировани­е в .NET
bytestream 23.01.2025
Введение в асинхронное программирование Асинхронное программирование представляет собой важнейшую концепцию современной разработки программного обеспечения, особенно в контексте создания. . .
КуМир: полное руководство
bytestream 23.01.2025
Введение в КуМир: история создания и назначение КуМир (Комплект Учебных МИров) представляет собой образовательную среду программирования, которая была создана для обучения основам алгоритмизации и. . .
Что такое OLAP. Где и как использовать многомерный анализ данных
bytestream 23.01.2025
Введение в OLAP-технологии В современном мире бизнес-аналитика и обработка больших массивов данных играют ключевую роль в принятии стратегических решений. Организации накапливают огромные объемы. . .
MongoDB: что это, для чего нужна и как использовать
bytestream 23.01.2025
Введение в MongoDB: современная документоориентированная СУБД В современном мире разработки программного обеспечения выбор правильной системы управления базами данных является критически важным. . .
Как использовать закрытый ключ шифрования в Git. Шифрование в Git
bytestream 23.01.2025
Установка и настройка закрытых ключей в Git предоставляет дополнительный уровень безопасности для работы с репозиториями. Для начала необходимо создать пару ключей, обычно это осуществляется с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru