Untitled
unknown
plain_text
2 years ago
3.9 kB
10
Indexable
import openpyxl
import datetime
current_date = datetime.date.today()
current_date = current_date.strftime("%d_%m_%Y")
month = str(datetime.date.today().month - 1).zfill(2) #zfill добавляет нули
year = str(datetime.date.today().year)
prev_year = str(datetime.date.today().year - 1)
# print(current_date)
from openpyxl import Workbook
# print("Выберите год: (1 - 2022) / (2 - 2023)")
# selection = input()
svod_path = r"C:\Users\skoskin\Documents\check_list\arm_nc_25_07_2023_(2022)\data\Сводная таблица.xlsx"
check_book_save_path = r'C:\Users\skoskin\Documents\check_list\arm_nc_25_07_2023_(2022)\АРМ НЦ(2022)_Чек-лист_25_07_23.xlsx'
# СВОДНАЯ
check_book_path = r'C:\Users\skoskin\Documents\check_list\arm_nc_25_07_2023_(2022)\АРМ НЦ(2022)_Чек-лист_25_07_23_clean.xlsx'
names = ["ОУД", "план", "факт", "УД", "мероприятия план", 'мероприятия риск'] # ОУД - общий уровень достижения
rows = [4, 11, 20, 26] # строки, которые нужно удалить
def cell_range_to_list(cell_range):
ret = [i[0].value for i in cell_range if i[0].value != 'x']
return ret
def big_cell_range_to_list(cell_range):
ret = [i[0].value for i in cell_range if i[0].value is not None]
return ret
def cool_cell_range_to_list(cell_range):
ret = [i[0].value for i in cell_range]
return ret
def get_data_svod(path):
wb = openpyxl.load_workbook(path)
sh1 = wb[wb.sheetnames[0]]
data_svod = {}
# уровень достижения общий
column = sh1["C8:C39"]
data_svod[names[0]] = big_cell_range_to_list(column)
# план
column = sh1["F8:F39"]
data_svod[names[1]] = cell_range_to_list(column)
# факт
column = sh1["G8:G39"]
data_svod[names[2]] = cell_range_to_list(column)
# уровень достижения
column = sh1["H8:H39"]
data_svod[names[3]] = cell_range_to_list(column)
# мероприятия
column = sh1["I8:I39"]
data_svod[names[4]] = cell_range_to_list(column)
column = sh1["M8:M39"]
data_svod[names[5]] = cell_range_to_list(column)
return data_svod
data_svod = get_data_svod(svod_path)
print(data_svod)
def delete(data, name, rows):
for i in range(len(rows)-1, -1, -1):
del data[name][rows[i]]
print('deleted row' + str(rows[i]))
for name in names[3:]:
delete(data_svod, name, rows)
# write data to check_list
def write_column(column, data, dict_name):
dt = column
count = 0
for i in dt:
# if (type(data[dict_name][count]) is int):
# i[0].value = data[dict_name][count]
if data[dict_name][count] is None:
i[0].value = 0
else:
i[0].value = float(str(data[dict_name][count]).replace(',', '.'))
count += 1
# for i in dt:
# print(i[0].value)
def save_svod_data(path, save_path, data_svod):
wb_check = openpyxl.load_workbook(path)
check_sh = wb_check[wb_check.sheetnames[1]]
# ОУД
column = check_sh["B36:B40"]
write_column(column, data_svod, names[0])
# План
column = check_sh["G3:G30"]
write_column(column, data_svod, names[1])
# Факт
column = check_sh["L3:L30"]
write_column(column, data_svod, names[2])
# УД
column = check_sh['B3:B30']
write_column(column, data_svod, names[3])
# Мероприятия план
column = check_sh["Q3:Q30"]
write_column(column, data_svod, names[4])
# Мероприятия риск
column = check_sh["U3:U30"]
write_column(column, data_svod, names[5])
wb_check.save(save_path)
save_svod_data(check_book_path, check_book_save_path, data_svod)Editor is loading...