Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
5 / 5 / 1
Регистрация: 30.03.2015
Сообщений: 98
1

Реализовать бланк для заполнения договора

23.04.2015, 19:44. Показов 3942. Ответов 23
Метки нет (Все метки)

Всем привет, хотел бы реализовать следующую вещь: программа имеет кнопку, и при ее нажатии выходит форма с texbox - ами, вбиваем в них нужные данные (типа ФИО и т.д.), и при нажатии на кнопки появляется документ готовый к печати, т.е., внутри программы должен быть шаблон договора, клиент забивает в форме свои данные, эти данные размещаются в печатной форме в нужных местах и затем выходит напечатанный договор. Клиент не должен иметь возможность менять форму договора. Подскажите как это реализовать, понимаю что прошу многого, но может направление подскажите. Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2015, 19:44
Ответы с готовыми решениями:

Реализовать поля, обязательные для заполнения
Всем привет.Покажите пожалуйста на примере, как сделать поля обязательные для заполнения?

Бланк договора с выбором соседних ячеек
Подскажите как решить проблему с подстановкой данных о услугах? Минимум что необходимо, это выбор...

Заполнить бланк договора в Word из данных запроса Access
Есть бланк договора в Word. Есть запрос, который собирает данные для договра из разных таблиц....

Как создать бланк заполнения?
Добрый день! Подскажите пожалуйста как в Delphi 7 сделать чтоб при заполнения формы выводился бланк...

__________________
23
Почетный модератор
21283 / 9017 / 1081
Регистрация: 11.04.2010
Сообщений: 11,015
23.04.2015, 19:55 2
Цитата Сообщение от Sersevik Посмотреть сообщение
направление подскажите
Направление такое:
1) Word
2) Excel
3) HTML

На выбор
0
5 / 5 / 1
Регистрация: 30.03.2015
Сообщений: 98
23.04.2015, 20:06  [ТС] 3
Памирыч, я в принципе хотел узнать есть ли функционал в Visual Studio программно сделать текстовый документ с табуляцией и т.д. (типа документ Word но именно программно в студии с возможностью вставки текстовых переменных в указанные места без искривления формы документа)

Добавлено через 1 минуту
и насколько это геморно по сравнению с работой в Word, т.е. я понимаю как готовый текст вордовский вставить в данную программу, а вот как туда красиво внести данные я не знаю
0
8151 / 4415 / 1730
Регистрация: 11.02.2013
Сообщений: 9,393
23.04.2015, 20:13 4
Шаблон лучше всего сделать вручную. В том же word. Там, где должны быть изменяемые данные, вставлять закладки и перекрёстные ссылки, если одно значение повторяется в нескольких местах. Затем на основании шаблона создавать документ и задавать значения закладкам. Для этого можно обойтись возможностями Word из коробки
1
169 / 177 / 27
Регистрация: 26.11.2011
Сообщений: 385
Записей в блоге: 1
24.04.2015, 11:57 5
Цитата Сообщение от Памирыч Посмотреть сообщение
Word
Цитата Сообщение от Памирыч Посмотреть сообщение
Excel
Хоть это и самые популярные редакторы текста и таблиц, но есть люди и предприятия которые не используют их.
Поэтому я выбираю html, легко, быстро, удобно.
1
COM‐пропагандист
515 / 445 / 105
Регистрация: 18.12.2014
Сообщений: 1,145
Записей в блоге: 2
24.04.2015, 22:20 6
GSXL, тогда уж xml, чтобы к нему можно было сразу применять разные xsl‐трансформации.
0
169 / 177 / 27
Регистрация: 26.11.2011
Сообщений: 385
Записей в блоге: 1
24.04.2015, 23:10 7
Цитата Сообщение от Замабувараев Посмотреть сообщение
применять разные xsl‐трансформации
Можно пример? Не видел такой связки, что позволяет?
0
1987 / 1158 / 444
Регистрация: 20.12.2014
Сообщений: 3,087
25.04.2015, 00:29 8
Цитата Сообщение от Sersevik Посмотреть сообщение
программно сделать текстовый документ с табуляцией и т.д.
http://wladm.narod.ru/C_Sharp/comword.html
0
5 / 5 / 1
Регистрация: 30.03.2015
Сообщений: 98
25.04.2015, 05:46  [ТС] 9
chumich, к сожалению Ваша ссылка на язык С, как я понимаю синтаксис языков разный
0
1987 / 1158 / 444
Регистрация: 20.12.2014
Сообщений: 3,087
25.04.2015, 09:17 10
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Sersevik Посмотреть сообщение
к сожалению Ваша ссылка на язык С, как я понимаю синтаксис языков разный
Да, виноват, хотя, в принципе всё очень похоже Вот хорошие ссылки по vb.net:
http://ishodniki.ru/art/artshow.php?id=473
http://www.vbnet.ru/articles/s... spx?id=128
Можно и в Microsoft посмотреть:
https://support.microsoft.com/en-us/kb/316383/ru
А это по vba, если вдруг понадобится (раздел 10):
http://www.askit.ru/custom/vba... e_plan.htm
4
5 / 5 / 1
Регистрация: 30.03.2015
Сообщений: 98
25.04.2015, 11:19  [ТС] 11
chumich, Спасибо за помощь, просто вы пишете
Цитата Сообщение от chumich Посмотреть сообщение
в принципе всё очень похоже
, это когда 2 языка знаешь, тогда можно так сказать, а если учишь свой первый, то многие Вам понятные вещи создают тупик для меня
0
COM‐пропагандист
515 / 445 / 105
Регистрация: 18.12.2014
Сообщений: 1,145
Записей в блоге: 2
25.04.2015, 18:42 12
GSXL, например. С помощью таких преобразований можно из xml получать другие xml, html, txt или даже rtf с pdf.
2
169 / 177 / 27
Регистрация: 26.11.2011
Сообщений: 385
Записей в блоге: 1
25.04.2015, 18:57 13
Замабувараев, пасиб, время буду покапаюсь что за зверь)
0
5 / 5 / 1
Регистрация: 30.03.2015
Сообщений: 98
03.05.2015, 12:13  [ТС] 14
ViterAlex, обращаюсь к Вам за помощью, создал как вы и посоветовали шаблон в worde, сделал закладки и перекрестные ссылки, данный шаблон через интерфейс ресурсы проекта внес в ресурсы, теперь пытаюсь с ним работать, но любое обращение ведет к ошибкам
vb.net
1
2
3
4
5
6
7
8
9
Dim oWord As Word.Application
        Dim oDoc As Word.Document
        Dim oTable As Word.Table
        Dim oPara1 As Word.Paragraph, oPara2 As Word.Paragraph
        Dim oPara3 As Word.Paragraph, oPara4 As Word.Paragraph
        Dim oRng As Word.Range
        Dim oShape As Word.InlineShape
        Dim oChart As Object
        Dim Pos As Double
тип "Word.Document" не определен, 2 дня пытался сам как то наладить обращение к документам Word, но постоянно натыкаюсь на то что VBA 2010 не может определить документ Word, что я не так делаю?
0
5377 / 2107 / 616
Регистрация: 11.04.2015
Сообщений: 3,550
Записей в блоге: 41
03.05.2015, 17:03 15
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Sersevik, для того, чтобы работать с вордами всякими, надо чтобы на компе был установлен ворд. Мало того, надо чтобы он был установлен не только на том компе, на котором ведется разработка приложения, но еще и на том, где оно будет использоваться. Кроме того, могут возникнуть проблемы, если на этих компах используются разные версии офиса(вроде решаемо, но все же). И весь этот геморрой только ради того, чтобы создать бланк явно того не стоит.
В принципе для создания отчетов существуют рипортинговые системы и в самой студии есть возможность создания отчета. Собственно ветка мсдн, где все описано
https://msdn.microsoft.com/ru-... 85185.aspx
Правда тут есть проблема: для того, чтобы этим воспользоваться надо неплохо знать инструментарий для работы с данными. Тут есть очень много возможностей, но надо все изучать, так что это скорее направление для изучения на будущее.
Что касается вордов всяких. Есть OpenXml SDK
https://msdn.microsoft.com/ru-... 48854.aspx
Позволяет работать с документами офиса без использования объектных библиотек самого офиса.
Скачать можно отсюда
https://www.microsoft.com/en-u... x?id=30425

Кроме того, я бы настоятельно рекомендовал обратить внимание на HTML. Здесь вообще ничего дополнительно не понадобится, кроме знания языка. Если, как уже говорилось выше, для генерации хтмл использовать связку XML+XSLT, то это даст возможностей гораздо больше, чем тебе может понадобиться в ближайшее время.
Помимо того, что хтмл не потребует ничего дополнительно, документ можно просмотреть на любом компьютере, любой операционной системе. Его можно редактировать во множестве программ, включая программы офисных пакетов, то есть хтмл-документ ты запросто можешь открыть в ворде том же и делать с ним все, что заблагорассудится.
Кроме того, можно использовать инструменты хмл для создания хтмл с хмл-совместимым синтаксисом. Так что, используя хмл-литералы, можно например генерировать готовый документ на основе изменяющихся данных.
Например, тебе надо создать документ, в котором будет табличка с фамилией именем и отчеством человека. Хтмл документ будет иметь такой вид
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>Бланк</title>
</head>
<body>
    <table border="1" cellpadding="0" cellspacing="0">
        <tr>
            <th>Фамилия</th>
            <td></td>
        </tr>
        <tr>
            <th>Имя</th>
            <td></td>
        </tr>
        <tr>
            <th>Отчестсво</th>
            <td></td>
        </tr>
    </table>
</body>
</html>

Во вторые ячейки строк надо вставить изменяющиеся данные, то есть данные конкретного человека. Создаем метод для генерации такого документа. Включаем в него три параметра(фамилию, имя и отчество), хотя параметр может быть один, но это допустим будет объект содержащий все нужные поля.
vb.net
1
2
3
  Function CreateBlank(firstName As String, secondName As String, surname As String) As XDocument
 
    End Function
И в тело метода копируем документ следующим образом.
Кликните здесь для просмотра всего текста
vb.net
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
    Function CreateBlank(firstName As String, secondName As String, surname As String) As XElement
        Return _
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta charset="utf-8"/>
            <title>Бланк</title>
        </head>
        <body>
            <table border="1" cellpadding="0" cellspacing="0">
                <tr>
                    <th>Фамилия</th>
                    <td></td>
                </tr>
                <tr>
                    <th>Имя</th>
                    <td></td>
                </tr>
                <tr>
                    <th>Отчестсво</th>
                    <td></td>
                </tr>
            </table>
        </body>
    </html>
    End Function

Ну и остается только вставить данные параметров функции в документ
Кликните здесь для просмотра всего текста
vb.net
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
   Function CreateBlank(firstName As String, secondName As String, surname As String) As XElement
        Return _
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta charset="utf-8"/>
            <title>Бланк</title>
        </head>
        <body>
            <table border="1" cellpadding="0" cellspacing="0">
                <tr>
                    <th>Фамилия</th>
                    <td><%= surname %></td>
                </tr>
                <tr>
                    <th>Имя</th>
                    <td><%= firstName %></td>
                </tr>
                <tr>
                    <th>Отчестсво</th>
                    <td><%= secondName %></td>
                </tr>
            </table>
        </body>
    </html>
    End Function

Дальше вызываешь эту функцию, передаешь ей аргументы, получаешь XElement, вызываешь у него ToString и код готов. Учитывая, что хтмл поддерживает хмл-совместимый синтаксис, можно делать это почти не заботясь о совместимости форматов. Кроме того, можно собирать документ по частям, но это уже детали.

Добавлено через 1 минуту
Документация по xml-литералам если что не ясно
3
5 / 5 / 1
Регистрация: 30.03.2015
Сообщений: 98
03.05.2015, 17:47  [ТС] 16
diadiavova, подробно и добротно все расписано, хотел перед изучением такого объема информации уточнить один вопрос, моя задача: создать шаблон документа с закладками(с табуляцией и всеми красотами вордовского документа), который можно хранить в ресурсах, при необходимости я могу вывести этот документ на печать с вставками по закладкам необходимых данных (из My.Settings, TextBox и прочего) и чтобы пользователь увидел данный документ перед печатью только в PrintPreviDialog (без возможности, что то изменить). Данное направление которое вы указали сможет с данной задачей справиться?
0
5377 / 2107 / 616
Регистрация: 11.04.2015
Сообщений: 3,550
Записей в блоге: 41
03.05.2015, 18:31 17
Sersevik, что касается красот:
HTML - язык на котором пишутся веб-страницы. Все, что ты видишь в вебе написано нем, включая ту страницу, которую ты сейчас читаешь. Достаточно тебе таких красот? Все зависит от степени знания HTML и CSS. Но думаю, для твоих задач будет достаточно базовых знаний.
Насчет закладок не совсем понял. Насчет вставок - это само собой. Я ведь даже пример привел, где на основе хтмл-документа создается функция и ее параметры вставляются куда надо.
Цитата Сообщение от Sersevik Посмотреть сообщение
и чтобы пользователь увидел данный документ перед печатью только в PrintPreviDialog (без возможности, что то изменить).
Документ можно отобразить в WebBrowser. Для вывода принтпревьюдиалога у браузера есть метод ShowPrintPreviewDialog, а для вывода на печать Print.

Добавлено через 18 минут
Чтоб долго не мучится покажу, что имею в виду. У тебя более старая версия студии, так что просто приведу код. На форму кинь менюшку или кнопку, короче, что-то, что можно будет жамкнуть. Далее размести там веббраузер. Ну и код в форме напиши такой.
Кликните здесь для просмотра всего текста
vb.net
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
Public Class Form1
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        MyInit()
    End Sub
 
    Sub MyInit()
        WebBrowser1.DocumentText = CreateBlank("Иван", "Иванович", "Иванов").ToString()
    End Sub
 
    Function CreateBlank(firstName As String, secondName As String, surname As String) As XElement
        Return _
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta charset="utf-8"/>
            <title>Бланк</title>
        </head>
        <body>
            <table border="1" cellpadding="0" cellspacing="0">
                <tr>
                    <th>Фамилия</th>
                    <td><%= surname %></td>
                </tr>
                <tr>
                    <th>Имя</th>
                    <td><%= firstName %></td>
                </tr>
                <tr>
                    <th>Отчестсво</th>
                    <td><%= secondName %></td>
                </tr>
            </table>
        </body>
    </html>
    End Function
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles PrintToolStripMenuItem.Click
        WebBrowser1.ShowPrintPreviewDialog()
    End Sub
End Class

Функция, генерирующая код, вызывается при загрузке формы, но думаю понятно, что ее можно вызывать где тебе надо.
1
5 / 5 / 1
Регистрация: 30.03.2015
Сообщений: 98
03.05.2015, 19:19  [ТС] 18
diadiavova, написано все вроде бы внятно, ну попробую поучить, но пока больше вопросов чем ответов )))

Добавлено через 48 минут
diadiavova, выходит ошибка
Цитата Сообщение от diadiavova Посмотреть сообщение
vb.net
1
2
3
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles PrintToolStripMenuItem.Click
   WebBrowser1.ShowPrintPreviewDialog()
  End Sub
(Для предложения "Handles" требуется переменная с модификатором "WithEvents", определенная во вмещающем типе или в одном из его базовых типов.)
Знаешь стал смотреть уроки на YouTube, вроде бы как все понятно пока, попробую разобраться, а тебе спасибо за помощь ))))
0
5377 / 2107 / 616
Регистрация: 11.04.2015
Сообщений: 3,550
Записей в блоге: 41
03.05.2015, 19:23 19
Цитата Сообщение от Sersevik Посмотреть сообщение
Для предложения "Handles" требуется
Ты просто скопипастил код и все. Создай обработчик клика для кнопочки, о которой я говорил, а код этого метода размести там. Если у тебя кнопка называется Button1, то можешь просто написать
Handles Button1.Click вместо Handles PrintToolStripMenuItem.Click
Надо же понимать, что делаешь, а не бездумно копипастить.
1
5 / 5 / 1
Регистрация: 30.03.2015
Сообщений: 98
04.05.2015, 19:27  [ТС] 20
diadiavova, да ступил с копированием ))), все в принципе вроде бы ясно, теперь буду пробовать реализовать свою задачу. Спасибо за помощь

Добавлено через 23 часа 49 минут
diadiavova, разобрался и создал шаблон документа в HTML, вроде бы и с закладками тоже получилось, единственное появился вопрос можно как нибудь вывести на печать без задействования
Цитата Сообщение от diadiavova Посмотреть сообщение
WebBrowser1.DocumentText
и
Цитата Сообщение от Sersevik Посмотреть сообщение
WebBrowser1.ShowPrintPreviewDialog()
а сразу PrintPreviewDialog?
нет возможности и желания вставлять окно браузера в форму, да и задействовать внешний браузер тоже не хочется
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2015, 19:27

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Автоматизация заполнения формы договора
Приветствую. Подскажите пожалуйста способ решения следующей задачи. Есть шаблон (форма) договора...

Как реализовать таблицу, данные для заполнения которой содержатся в бд mssql
Какие образом можно реализовать заполнение связанными друг с другом данными, которые содержатся в...

Можно ли переделать макрос подстановки значений из ячеек одного листа в шаблон(бланк) другого листа, заменив сам бланк ш
Доброго времени суток! Интересует следующий вопрос, есть печатный шаблон (бланк) на листе в excel,...

Необходимо создать форму для заполнения создания и заполнения таблицы
Всем доброго времени суток. Суть такова, Создана база данных с несколькими таблицами, в них...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.