Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import sys
- import uuid
- import pytz
- import xlrd
- import glob
- from docx import Document
- from datetime import datetime
- # Загружаем в память документ (Excel)
- workbook = xlrd.open_workbook(sys.argv[1])
- worksheet = workbook.sheet_by_index(0)
- # Загружаем в память образец готового документа (Word)
- document = Document('example.docx')
- # Загрузка данных таблицы в память
- def loadTable(n):
- global table; table = document.tables[n]
- # Получение значения ячейки по координатам x, y (Excel)
- def getValue(x, y):
- return(worksheet.cell(x, y).value)
- # Установка значения ячейки по координатам x, y (Word)
- def setValue(x, y, text):
- table.cell(x, y).text = text
- # Сохранение файла
- def saveDocument(name):
- document.save(str(name) + '.docx')
- # Поиск первого элемента
- currentPosition = 0; elementValue = str(worksheet.cell(currentPosition, 0).value)
- while not "Наименование организации" in elementValue:
- currentPosition += 1; elementValue = str(worksheet.cell(currentPosition, 0).value)
- firstElementPosition = currentPosition
- # Поиск последней строки
- currentPosition = firstElementPosition; cell = 0; count = 0
- while True:
- for element in range(15):
- try:
- value = str(worksheet.cell(currentPosition, cell).value)
- if value.strip():
- count += 1;
- cell += 1
- except IndexError:
- count = 0
- if count == 0:
- break
- currentPosition += 1; cell = 0; count = 0
- lastElementPosition = currentPosition
- savedLastElementPosition = lastElementPosition
- # Количество итераций
- total = lastElementPosition - firstElementPosition - 1; i = 0
- for element in range(total):
- i = i + 1
- #
- # Наименование организации
- #
- # Загружаем в память данные из таблицы 0
- loadTable(0)
- # Запись данных в документ
- setValue(0, 2, str(getValue(i, 0))) # Наименование организации
- #
- # Идентификационный номер налогоплательщика,
- # номер СНИЛС и пол
- #
- # Загружаем в память данные из таблицы 1
- loadTable(1)
- # Запись данных в документ
- setValue(1, 2, str(int(getValue(i, 1)))) # Идентификационный номер налогоплательщика
- setValue(1, 3, str( getValue(i, 2))) # Номер СНИЛС
- setValue(1, 7, str( getValue(i, 3))) # Пол
- #
- # Фамилия, имя и отчество
- #
- # Загружаем в память данные из таблицы 3
- loadTable(3)
- # Запись данных в переменные
- lastName = str(getValue(i, 4))
- firstName = str(getValue(i, 5))
- # Запись данных в документ
- setValue(0, 1, getValue(i, 4)) # Фамилия
- setValue(0, 3, getValue(i, 5)) # Имя
- setValue(0, 5, getValue(i, 6)) # Отчество
- #
- # Дата и место рождения
- #
- # Загружаем в память данные из таблицы 4
- loadTable(4)
- # Запись данных в документ
- setValue(1, 3, getValue(i, 7)) # Дата рождения
- setValue(3, 3, getValue(i, 8)) # Место рождения
- #
- # Номер паспорта, день, месяц, год
- # и место его выдачи
- #
- # Загружаем в память данные из таблицы 12
- loadTable(12)
- # Извлечение данных (день, месяц, год)
- d = datetime.strptime(getValue(i, 10), '%d.%m.%Y').strftime('%d')
- m = datetime.strptime(getValue(i, 10), '%d.%m.%Y').strftime('%m')
- y = datetime.strptime(getValue(i, 10), '%d.%m.%Y').strftime('%Y')
- # Запись данных в документ
- setValue(0, 3, getValue(i, 9)) # Номер паспорта
- setValue(0, 6, d) # Дата выдачи (день)
- setValue(0, 8, m) # Дата выдачи (месяц)
- setValue(0, 10, y) # Дата выдачи (год)
- setValue(1, 1, getValue(i, 11)) # Место выдачи
- #
- # Адреса (пасп. и факт.)
- #
- # Загружаем в память данные из таблицы 13
- loadTable(13)
- # Запись данных в документ
- setValue(1, 2, getValue(i, 12)) # Адрес Пасп.
- # Загружаем в память данные из таблицы 14
- loadTable(14)
- # Запись данных в документ
- setValue(1, 2, getValue(i, 13)) # Адрес Факт.
- #
- # Военный комиссариат
- #
- # Загружаем в память данные из таблицы 16
- loadTable(16)
- # Запись данных в документ
- setValue(2, 3, getValue(i, 14)) # Военный комиссариат
- saveDocument(lastName + "_" + firstName)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement