SHARE
TWEET

Untitled

a guest Aug 19th, 2019 51 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import sys
  5. import uuid
  6. import pytz
  7. import xlrd
  8. import glob
  9. from docx import Document
  10. from datetime import datetime
  11.  
  12. # Загружаем в память документ (Excel)
  13. workbook = xlrd.open_workbook(sys.argv[1])
  14. worksheet = workbook.sheet_by_index(0)
  15.  
  16. # Загружаем в память образец готового документа (Word)
  17. document = Document('example.docx')
  18.  
  19. # Загрузка данных таблицы в память
  20. def loadTable(n):
  21.    global table; table = document.tables[n]
  22.  
  23. # Получение значения ячейки по координатам x, y (Excel)
  24. def getValue(x, y):
  25.    return(worksheet.cell(x, y).value)
  26.  
  27. # Установка значения ячейки по координатам x, y (Word)
  28. def setValue(x, y, text):
  29.    table.cell(x, y).text = text
  30.  
  31. # Сохранение файла
  32. def saveDocument(name):
  33.    document.save(str(name) + '.docx')
  34.  
  35. # Поиск первого элемента
  36. currentPosition = 0; elementValue = str(worksheet.cell(currentPosition, 0).value)
  37. while not "Наименование организации" in elementValue:
  38.     currentPosition += 1; elementValue = str(worksheet.cell(currentPosition, 0).value)
  39. firstElementPosition = currentPosition
  40.  
  41. # Поиск последней строки
  42. currentPosition = firstElementPosition; cell = 0; count = 0
  43. while True:
  44.     for element in range(15):
  45.         try:
  46.           value = str(worksheet.cell(currentPosition, cell).value)
  47.           if value.strip():
  48.               count += 1;
  49.           cell += 1
  50.         except IndexError:
  51.           count = 0
  52.     if count == 0:
  53.         break
  54.     currentPosition += 1; cell = 0; count = 0
  55. lastElementPosition = currentPosition
  56. savedLastElementPosition = lastElementPosition
  57.  
  58. # Количество итераций
  59. total = lastElementPosition - firstElementPosition - 1; i = 0
  60.  
  61. for element in range(total):
  62.  
  63.     i = i + 1
  64.  
  65.     #
  66.     # Наименование организации
  67.     #
  68.  
  69.     # Загружаем в память данные из таблицы 0
  70.     loadTable(0)
  71.  
  72.     # Запись данных в документ
  73.     setValue(0, 2, str(getValue(i, 0))) # Наименование организации
  74.  
  75.     #
  76.     # Идентификационный номер налогоплательщика,
  77.     # номер СНИЛС и пол
  78.     #
  79.  
  80.     # Загружаем в память данные из таблицы 1
  81.     loadTable(1)
  82.  
  83.     # Запись данных в документ
  84.     setValue(1, 2, str(int(getValue(i, 1)))) # Идентификационный номер налогоплательщика
  85.     setValue(1, 3, str(    getValue(i, 2)))  # Номер СНИЛС
  86.     setValue(1, 7, str(    getValue(i, 3)))  # Пол
  87.  
  88.     #
  89.     # Фамилия, имя и отчество
  90.     #
  91.  
  92.     # Загружаем в память данные из таблицы 3
  93.     loadTable(3)
  94.  
  95.     # Запись данных в переменные
  96.     lastName  = str(getValue(i, 4))
  97.     firstName = str(getValue(i, 5))
  98.  
  99.     # Запись данных в документ
  100.     setValue(0, 1, getValue(i, 4)) # Фамилия
  101.     setValue(0, 3, getValue(i, 5)) # Имя
  102.     setValue(0, 5, getValue(i, 6)) # Отчество
  103.  
  104.     #
  105.     # Дата и место рождения
  106.     #
  107.  
  108.     # Загружаем в память данные из таблицы 4
  109.     loadTable(4)
  110.  
  111.     # Запись данных в документ
  112.     setValue(1, 3, getValue(i, 7)) # Дата рождения
  113.     setValue(3, 3, getValue(i, 8)) # Место рождения
  114.  
  115.     #
  116.     # Номер паспорта, день, месяц, год
  117.     # и место его выдачи
  118.     #
  119.  
  120.     # Загружаем в память данные из таблицы 12
  121.     loadTable(12)
  122.  
  123.     # Извлечение данных (день, месяц, год)
  124.     d = datetime.strptime(getValue(i, 10), '%d.%m.%Y').strftime('%d')
  125.     m = datetime.strptime(getValue(i, 10), '%d.%m.%Y').strftime('%m')
  126.     y = datetime.strptime(getValue(i, 10), '%d.%m.%Y').strftime('%Y')
  127.  
  128.     # Запись данных в документ
  129.     setValue(0,  3, getValue(i,  9)) # Номер паспорта
  130.     setValue(0,  6, d)               # Дата выдачи (день)
  131.     setValue(0,  8, m)               # Дата выдачи (месяц)
  132.     setValue(0, 10, y)               # Дата выдачи (год)
  133.     setValue(1,  1, getValue(i, 11)) # Место выдачи
  134.  
  135.     #
  136.     # Адреса (пасп. и факт.)
  137.     #
  138.  
  139.     # Загружаем в память данные из таблицы 13
  140.     loadTable(13)
  141.  
  142.     # Запись данных в документ
  143.     setValue(1, 2, getValue(i, 12)) # Адрес Пасп.
  144.  
  145.     # Загружаем в память данные из таблицы 14
  146.     loadTable(14)
  147.  
  148.     # Запись данных в документ
  149.     setValue(1, 2, getValue(i, 13)) # Адрес Факт.
  150.  
  151.     #
  152.     # Военный комиссариат
  153.     #
  154.  
  155.     # Загружаем в память данные из таблицы 16
  156.     loadTable(16)
  157.  
  158.     # Запись данных в документ
  159.     setValue(2, 3, getValue(i, 14)) # Военный комиссариат
  160.  
  161.     saveDocument(lastName + "_" + firstName)
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top