Advertisement
Guest User

Untitled

a guest
Aug 19th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.19 KB | None | 0 0
  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)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement