Как создать программу для заполнения бланков

Form Pilot Office — программа для создания и заполнения различных бумажных бланков и анкет, например, при получении загранпаспорта или виз в посольстве, при заполнении сертификатов, грамот, дипломов, налоговых форм и электронных бланков (PDF, DOC, XLS, TXT. ).

Программа получает изображение бланка с помощью виртуального принтера из любой другой программы, поддерживающей функцию печати. Компьютеры с программами Form Pilot заменяют ушедшие в прошлое печатные.

Возможности:
• Заполнение одностраничных электронных бланков (PDF, DOC, XLS, TXT. )
• Заполнение одностраничных бумажных бланков
• Распечатывание нового введенного текста на исходный бумажный бланк или всего документа на чистый лист бумаги. Поддержка принтерных шрифтов.
• Сохранение документов во внутреннем формате программы.
• Экспорт в форматы растровых изображения: BMP, TIFF, JPG, PNG, PCX.
• Заполнения большого количества одинаковых бланков с использованием внутренней базы данных.

Бланк в Excel


• Поддержка многостраничных документов.
• Сохранение документов в формате PDF. Настройка параметров формата PDF.

Скачать бесплатно программу: Form Pilot Office 2 + Portable

Form Pilot Office 2 + Portable

*загружен на Yandex.Disk

Источник: soft-landia.ru

6.2. Создание и автоматическое заполнение бланков стандартных документов Создание vba-программ

Пример 39. При оплате за обучение студент вносит деньги в кассу, где бухгалтер заполняет от руки квиток об оплате. Автоматизировать ручную работу бухгалтера, создав форму, заполняющую карточку оплаты, которую можно при необходимости отправить на печать.

Технология выполнения

Интерфейс шаблона и приложения

В качестве интерфейса сначала рассмотрим самую простую форму приложения, отвечающего условиям задачи и включающего в себя соответствующие текстовые поля ввода и рабочие кнопки (рис. 85).

Рис. 85. Форма примера 39 в рабочем состоянии

Далее рассмотрим, как автоматизировать печать квитанции об оплате за обучение.

Начнем с разработки бланка стандартного документа (печатной формы). Эту форму можно сделать на базе шаблона с текстовыми полями, в которые будут заноситься изменяющиеся сведения. Для этого выполните следующие команды: Файл + Создать. В правой части окна нового документа выберите раздел Шаблоны и гиперссылку На моем компьютере (рис. 86).

После чего появится диалоговое окно Шаблоны (рис. 87), в котором на вкладке Общие необходимо выделить пиктограмму Новый документ и поставить переключатель Шаблон в рамке Создать.

Включите панель Формы (Вид + Панели инструментов + Формы). Для дальнейшей работы понадобится только один элемент этой панели – Текстовое поле

Автозаполнение Формуляров и Документов на основе Excel

которое позволяет создать на форме изменяющееся поле (либо посредством кода, либо самим пользователем). Выбирая курсором место в документе Word для расположения соответствующего поля и расположив на нем элемент Поле, можно получить необходимую форму. Для того чтобы расширить поле, надо поставить в него курсор и несколько раз нажать Tab. Для того чтобы подчеркнуть поле, выделите его как текст и примените к нему подчеркивание.

Читайте также:
План тестирования программы пример

Рис. 87. Диалоговое окно Шаблоны

Создайте шаблон документа, придерживаясь рис. 88.

Рис. 88. Шаблон документа word, в который вносятся данные для печати

В некоторых полях (поля выделены серым фоном) можно ввести значения по умолчанию. Значение по умолчанию устанавливается при помощи диалогового окна Свойства, которое можно вывести на экран следующим образом:

• щелкнуть правой клавишей мыши по необходимому текстовому полю;

• в появляющемся контекстном меню выбрать Свойства;

• указать значение по умолчанию (рис. 89).

Значения по умолчанию позволяют менять только те данные, которые должны изменяться нечасто. Например, оплата за обучение в основном одна и та же – 1500 руб., поэтому значение этого поля будет меняться не очень часто.

Рис. 89. Установка параметров текстового поля «сумма_опл»

Рассмотрим и другие необходимые элементы рабочего окна «Параметры текстового поля». В поле Тип указывается тип значения, которое можно помещать в поле. Можно заполнить поле Максимальная длина, хотя наиболее важным для дальнейшего использования кодом VBA является поле Закладка.

Значение этого поля будет служить меткой, в которую должен устанавливаться курсор, перед помещением в документ очередной порции информации. Поэтому, как только все необходимые поля определены, нужно указать для каждого из них осмысленные метки. Для бланка документа Word, приведенного на рис. 86, зададим (последовательно) такие метки:

Фамилия – фамилия студента;

Имя – имя студента;

Отчество – отчество студента;

Группа – наименование группы;

Месяц_опл – название месяца, за который вносится оплата;

Сумма_опл – внесенная сумма;

ФИО_бух – фамилия принявшего бухгалтера;

Дата_опл – дата оплаты.

После окончания разработки формы документа сохраним его под именем Оплата за учебу в каталоге Шаблоны. На рис. 88 представлен шаблон созданного документа с изменяющимися полями.

Создание модуля Печать для шаблона документа

Далее необходимо перейти в редактор VBA и создать форму приложения, отвечающего условиям задачи (рис. 85).

В листинге представлен код процедуры печати бланка квитанции об оплате, сопутствующие и отладочные процедуры.

Листинг (занести в Модуль1 проекта Оплата за учебу)

OptioNExplicit

OptioNBase 1

‘ переменные формы приложения

Public фам1 As String

Public имя1 As String

Public отчество1 As String

Public групп1 As String

Public месяц As String

Public сумма As String

Public бух As String

Public дата As String

‘ переменные формы шаблона документа

Public фамилия As String

Public имя As String

Public отчество As String

Public группа As String

Public месяц_опл As String

Public сумма_опл As String

Public фио_бух As String

Public дата_опл As String

Dim book(8) As String

Dim dataMas(8) As String

Dim i As Integer

Sub Печать() ‘процедура печати бланка

Читайте также:
План и программа подготовки проекта для каждого обучающегося определяется родителями

‘Заносим информацию в массивы bookmarmas, datamas

book(1) = «фамилия»: dataMas(1) = фамилия

book(2) = «имя»: dataMas(2) = имя

book(3) = «отчество»: dataMas(3) = отчество

book(4) = «группа»: dataMas(4) = группа

book(5) = «месяц_опл»: dataMas(5) = месяц_опл

book(6) = «сумма_опл»: dataMas(6) = сумма_опл

book(7) = «фио_бух»: dataMas(7) = фио_бух

book(8) = «дата_опл»: dataMas(8) = дата

‘заполнение полей квитанции:

For i = 1 To 8

ActiveDocument.FormFields(ActiveDocument.Bookmarks(book(i)).Name).Result = dataMas(i)

ActiveDocument.PrintPreview Выполняется предварительный просмотр печати.

‘Для того чтобы реально распечатать документ, применяется метод PrintOut объекта ApplicatioN(см. Help)

UserForm1.Hide

В связи с различием переменных, принимаемых и передаваемых на печать, объявим как Public переменные двух видов: получаемые интерфейсной частью приложения и печатаемые в форме шаблона.

Обратите внимание на то, что здесь все данные имеют тип String. Такие однотипные данные позволяют записывать их в поля формы в цикле, содержащем всего два оператора (см. описание листинга).

Создание модулей работы кнопок формы приложения

Работа кнопки Выдать справку состоит в считывании введенной информации в текстовые поля формы приложения, передаче их значений переменным формы шаблона документа с дальнейшим выводом информации в шаблон документа.

OptioNExplicit

Private Sub CommandButton1_Click()

фамилия = фам1

отчество = отчество1

группа = групп1

месяц_опл = месяц

сумма_опл = сумма

фио_бух = бух

дата_опл = дата

Call Печать

Процедуры присваивания переменным формы приложения введенных значений в текстовые поля формы.

Private Sub textBox1_change()

фам1 = TextBox1.Value

Private Sub textBox2_change()

имя1 = TextBox2.Value

Private Sub textBox3_change()

отчество1 = TextBox3.Value

Private Sub textBox4_change()

групп1 = TextBox4.Value

Private Sub textBox5_change()

месяц = TextBox5.Value

Private Sub textBox6_change()

сумма = TextBox6.Value

Private Sub textBox7_change()

бух = TextBox7.Value

Private Sub textBox8_change()

дата = TextBox8.Value

Откомпилируйте программу и запустите на проверку.

Источник: studfile.net

Как часто вы заполняете документы по шаблону? Я не особо, но если вам приходиться заполнять одни и те же данные в шаблонный документ, то в этом рутинном деле может помочь Python. И в значительной мере, буквально несколькими строчками кода облегчить работу, которая выполниться в считанные секунды, вместо потраченного дня. Давайте сделаем небольшой скрипт, который поможет автоматизировать рутинный процесс.

000-1.jpg

В принципе, я могу представить, кому и когда требуется выполнять работу по заполнению шаблонных документов. Например, юристам. Различные уведомления, постановления и прочие документы, с которыми они работают. Или кадровикам. Если нужно, к примеру, сделать большое количество однотипных уведомлений, где меняется только Ф.И.О., должность и подразделение. Да мало ли где.

Давайте приступим к написанию кода.

Что понадобиться?

В этот раз понадобиться не особо много, а точнее, нужно будет установить всего лишь одну библиотеку docxtpl, с помощью которой и будет заполняться документ. Пишем в терминале:

pip install docxtpl

Понадобиться шаблон документа, в котором будут указаны места, куда нужно вставлять переменные. Места для вставки указываются с помощью двойных парных скобок: >, где дата, это та переменная, что будет заменена на нужное значение. Я скачал какое-то уведомление об изменении условий трудового договора, и расставил в него переменные:

Читайте также:
Предположим что при разграничении доступа учитывается семантика программ

Переменные в шаблоне

screenshot1.png

И еще вам понадобится база данных работников или файл Excel с заполненными данными. С ним тоже можно работать. Я для примера использовал json-файл, в который внес некоторые данные. Этот файл, может быть выгружен из реальной программы по учету персонала. Не суть, какой формат файла вы выберете.

Главное, чтобы вы смогли прочитать из него данные.

Структура файла json

screenshot2.png

Заполнение данных

Импортируем в скрипт все библиотеки, что нам необходимы:

import json import locale import os from datetime import datetime as dt from docxtpl import DocxTemplate

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

И передавать их в функцию. Здесь же, для демонстрации работы это не требуется.

Для того, чтобы заполнение даты в документе не выглядело совсем уж печально, я решил, что надо переводить дату в формат вида: 12 января 1970. Но, у питона с русской локалью оказалась беда. И системную локаль он просто так не подхватывает. Потому вызываем функцию setlocale(locale.LC_ALL, ») модуля locale.

Следующим шагом будет загрузить файл шаблона, загрузить файл БД или json, с которым вы работаете, а также создать папку для сохранения результатов заполнения. Ведь мы их все будем сохранять под разными именами.

Затем запускаем цикл по файлу json. Выводим принт, чтобы не было скучно. Он тут больше для декорации.

Заполняем словарь необходимыми значениями для подстановки. Значения должны иметь такие же названия, как и в шаблоне. С помощью render заполняем данные и сохраняем файл с Ф.И.О. человека, на которого заполнялся шаблон.

Полный код скрипта заполнения шаблона

Вот так вот, достаточно просто и быстро можно избавить себя от кучи рутинной работы. Единственное, на что здесь, именно в этом коде нужно обратить внимание, это на склонения названий месяцев. То есть, нужно или найти библиотеку, которая переводит данное название в нужное склонение, или написать функцию, которая это будет делать в коде. Я этого здесь делать не стал. Но, для использования на реальных датах, думаю, что может понадобиться.

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

А на это, пожалуй, все.

Спасибо за внимание. Надеюсь, что данная информация будет полезна

Источник: codeby.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru