Я написал такой код.
# coding: utf8
import re
import xlwt
from xlrd import open_workbook,XL_CELL_TEXT, cellname
from tempfile import TemporaryFile
from xlwt import Workbook
"""Шаблон цеха"""
book_shablon_ceha = open_workbook('ceha_shablon.xls')
ceha_shablon = book_shablon_ceha.sheet_by_index(0)
"""Шаблон подряд"""
book_shablon_podryad = open_workbook('podryad_shablon.xls')
podryad_shablon = book_shablon_podryad.sheet_by_index(0)
"""Файл цехов на запись"""
book_ceha = xlwt.Workbook('utf8')
ceha = book_ceha.add_sheet('Отчет по цехам')
"""Файл подрядных на запись"""
book_podryad = xlwt.Workbook('utf8')
podryad = book_podryad.add_sheet('Отчет по подрядным')
"""Фонты"""
font_red = xlwt.easyxf('font: height 240,name Arial,colour_index black, bold off,italic on; align: wrap on, vert top, horiz left;pattern: pattern solid, fore_colour white;')
font_blue = xlwt.easyxf('font: height 240,name Arial,colour_index black, bold off,italic on; align: wrap on, vert top, horiz left;pattern: pattern solid, fore_colour white;')
font_green = xlwt.easyxf('font: height 240,name Arial,colour_index black, bold off,italic on; align: wrap on, vert top, horiz left;pattern: pattern solid, fore_colour white;')
font_400 = xlwt.easyxf('font: height 400,name Arial,colour_index black, bold off,italic on; align: wrap on, vert top, horiz left;pattern: pattern solid, fore_colour white;')
font_240_i = xlwt.easyxf('font: height 240,name Arial,colour_index black, bold off,italic on; align: wrap on, vert top, horiz left;pattern: pattern solid, fore_colour white;')
"""Пустой словарь"""
lic_scheta = {}
"""Открываем файл и парсим его, получаем словарь с ключем лицевого счета и значением суммы переговоров за месяц"""
for line in open('0414p.prn'):
str_lic_scheta = re.findall(r'(^\d{1,4})', line)
float_dengi = re.findall(r'\d{1,6}\.\d{1,2}', line)
obsh = str_lic_scheta + float_dengi
key = int(obsh[0])
value1 = float(obsh[1])
lic_scheta[key] = value1
spisok_kortejey = sorted(lic_scheta.items())
""""Прочитали столбик 1 с 7 до 107 ячейки, загнали в список и отсортировали список """
nomer_pervoy_yacheyki_shablona_ceha = 7
spisok_dlya_licev_schetov_ceha = []
spisok_vseh_summ = []
for iterator_schetov_ceha in range(nomer_pervoy_yacheyki_shablona_ceha,107):
yacheyka_ceha = int(ceha_shablon.cell(iterator_schetov_ceha,1).value)
#print iterator_schetov_ceha, "номер ячейки"
#print yacheyka_ceha
spisok_dlya_licev_schetov_ceha.append(yacheyka_ceha)
spisok_lic_scheta_ceha_shablon = sorted(spisok_dlya_licev_schetov_ceha)
""""Из списка счетов цехов получим поочереди каждый номер лицевого счета и сравним его со словарем напарсенным, если он есть запишем в файл ceha_otchet.xls"""
for schet, summa in spisok_kortejey:
if schet in spisok_lic_scheta_ceha_shablon:
#print schet, summa
ceha.write(nomer_pervoy_yacheyki_shablona_ceha, 1, schet , font_green)
ceha.write(nomer_pervoy_yacheyki_shablona_ceha, 3, summa , font_green)
spisok_vseh_summ.append(summa)
obshaya_summa_chehov = sum(spisok_vseh_summ)
nomer_pervoy_yacheyki_shablona_ceha = nomer_pervoy_yacheyki_shablona_ceha + 1
ceha.write(nomer_pervoy_yacheyki_shablona_ceha +1, 3, obshaya_summa_chehov, font_green)
ceha.write(nomer_pervoy_yacheyki_shablona_ceha +1, 2, "Итого: ", font_240_i )
ceha.write(6, 2,"НАЗВАНИЕ ПОДРЯДНОЙ ОРГАНИЗАЦИИ",font_400)
ceha.write(6, 3, "Сумма, руб.", font_240_i)
ceha.write(6, 1,"№ л.с",font_400)
ceha.col(3).width = 3000
ceha.col(2).width = 20000
book_ceha.save('otchet_ceha.xls')
book_ceha.save(TemporaryFile())
""""Прочитали столбик 1 с 7 до 38 ячейки, загнали в список и отсортировали список """
nomer_pervoy_yacheyki_shablona_podryad = 7
spisok_dlya_licev_schetov_ceha_podryad = []
spisok_vseh_summ_podryad = []
for iterator_schetov_ceha_podryad in range(nomer_pervoy_yacheyki_shablona_podryad,38):
yacheyka_ceha_podryad = int(podryad_shablon.cell(iterator_schetov_ceha_podryad,1).value)
#print iterator_schetov_ceha, "номер ячейки"
#print yacheyka_ceha
spisok_dlya_licev_schetov_ceha_podryad.append(yacheyka_ceha_podryad)
spisok_lic_scheta_ceha_shablon_podryad = sorted(spisok_dlya_licev_schetov_ceha_podryad)
""""Из списка счетов цехов получим поочереди каждый номер лицевого счета и сравним его со словарем напарсенным, если он есть запишем в файл ceha_otchet.xls"""
for schet1, summa1 in spisok_kortejey:
if schet1 in spisok_lic_scheta_ceha_shablon_podryad:
#print schet, summa
podryad.write(nomer_pervoy_yacheyki_shablona_podryad, 1, schet1 , font_green)
podryad.write(nomer_pervoy_yacheyki_shablona_podryad, 3, summa1 , font_green)
spisok_vseh_summ_podryad.append(summa1)
obshaya_summa_chehov_podryad = sum(spisok_vseh_summ_podryad)
nomer_pervoy_yacheyki_shablona_podryad = nomer_pervoy_yacheyki_shablona_podryad + 1
podryad.write(nomer_pervoy_yacheyki_shablona_podryad +1, 3, obshaya_summa_chehov_podryad, font_green)
podryad.write(nomer_pervoy_yacheyki_shablona_podryad +1, 2, "Итого: ", font_240_i )
podryad.write(6, 2,"НАЗВАНИЕ ПОДРЯДНОЙ ОРГАНИЗАЦИИ",font_400)
podryad.write(6, 3, "Сумма, руб.", font_240_i)
podryad.write(6, 1,"№ л.с",font_400)
podryad.col(3).width = 3000
podryad.col(2).width = 20000
book_podryad.save('otchet_podryad.xls')
book_podryad.save(TemporaryFile())