Формирование списка для пригласительных на Perl

Жена участвует в работе участковой избирательной комиссии на предстоящих выборах. Одной из обязанностей участников является:

  • выписка пригласительных на сверку списков избирателей
  • выписка пригласительных на выборы

Чтобы не выписывать их в ручную, решили немного автоматизировать этот процесс. Выдали нам список избирателей по закрепленным за женой домам в электронном виде. Можно было бы просто воспользоваться слиянием документов в MS Office. Но тогда бы пришлось печатать кол-во пригласительных по кол-ву избирателей, что не совсем корректно, хотя некоторые мадам так и делали. Я решил изменить список таким образом, чтобы можно было сделать слияние по одному пригласительному на квартиру. И тут на помощь мне пришел Perl.

Входной формат файла:

ФИО_Изберателя_1; Адрес 
...
ФИО_Избирателя_N;Адрес

На выходе получаем Excel файл в 2 колонки. В первой колонке содержатся ФИО избирателей объединенных по прописке, во второй колонке адрес. При этом фамилия и отчество сокращаются до инициалов. Данный файл потом используется в качестве списка адресатов при слиянии документов в MS Office.

Код программы (писалось в OC Windows/ActivePerl):

#!perl -w 
 
#use strict;
use Spreadsheet::WriteExcel;
use Encoding;
 
open LIST, "< d:/programming/list.txt"; my %cnt;  %sp=(); my $str=""; $i=0; my $workbook = Spreadsheet::WriteExcel->new('spisok.xls');
my $lipetsk = $workbook->add_worksheet('Lipetsk_106');
$lipetsk->write(0, 0, Encode::decode('cp1251',"ИМЯ"));
$lipetsk->write(0, 1, Encode::decode('cp1251',"АДРЕС"));
 
@string=;
#Формируем Хеш-список и массив адресов
foreach $line(@string)
	{
		($name,$address)=split(/;/, $line);
		chomp ($address);
		$sp{$name}=$address;
		$a[$i]=$address;
		$i++;
	}
#оставляем уникальные записи в массиве
@a = grep {! $cnt{$_}++;} @a;
 
#преобразование списка	
for ($i=0;$iwrite($i+1, 0, Encode::decode('cp1251',$str));
	$lipetsk->write($i+1, 1, Encode::decode('cp1251',$a[$i]));
	$str="";
}
 
close (LIST);

Конечно код далек от идеала, не так изящен, как пишут матерые программисты. Но с поставленной задачей он справляется.

Дальше все просто. Открываем MS Word, создаем там макет пригласительных. Подгружаем наш список избирателей, загружаем в принтер бланки и можем попить чаю, пока техника выписывает пригласительные.

Поделиться в соц. сетях

Share to Google Buzz
Share to Google Plus
Share to LiveJournal
Share to MyWorld
Share to Odnoklassniki
This entry was posted in Новости and tagged , , , , . Bookmark the permalink.

One Response to Формирование списка для пригласительных на Perl

  1. boneka sex says:

    Have you ever thought about creating an ebook or guest authoring
    on other blogs? I have a blog based upon on the same subjects
    you discuss and would really like to have you share some stories/information. I know my visitors would enjoy your work.
    If you’re even remotely interested, feel free to shoot me an email.

Leave a Reply

Your email address will not be published. Required fields are marked *

*