Пробую ещё раз залить, т.к. прошлый раз залилось с ошибкой

This commit is contained in:
a.gruzdev
2026-06-15 09:16:37 +03:00
commit f38324645e
14 changed files with 2935 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
import os
import openpyxl
from openpyxl.styles import Alignment
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
FILE_NAME = os.path.join(SCRIPT_DIR, "registration_for_training.xlsx")
def fix_shifted_rows():
if not os.path.exists(FILE_NAME):
print(f"Файл {FILE_NAME} не найден.")
return
try:
wb = openpyxl.load_workbook(FILE_NAME)
ws = wb.active
except PermissionError:
print("\n[ОШИБКА] Доступ запрещен. Пожалуйста, ЗАКРОЙТЕ файл 'registration_for_training.xlsx' в Excel или других программах и запустите скрипт снова.\n")
return
except Exception as e:
print(f"Ошибка при загрузке файла: {e}")
return
rows = list(ws.iter_rows(values_only=False))
if len(rows) <= 1:
print("В таблице нет данных для исправления (только заголовки).")
return
changed = False
for i in range(1, len(rows)):
row_num = i + 1
id_val = ws.cell(row=row_num, column=1).value
# If the first cell doesn't start with 'id_', it means this row was written
# by the old running server process and needs to be shifted to the right.
if id_val and not str(id_val).startswith("id_"):
print(f"Исправляем смещение в строке {row_num} для пользователя: '{id_val}'")
# Read the 8 fields that were written by the old server
old_values = [ws.cell(row=row_num, column=c).value for c in range(1, 9)]
# Re-format this row: Column 1 is id_001, columns 2-9 are the shifted fields
ws.cell(row=row_num, column=1, value="id_001")
for col_idx, val in enumerate(old_values, 2):
ws.cell(row=row_num, column=col_idx, value=val)
# Clear column 10 in case there is any residue
ws.cell(row=row_num, column=10, value=None)
# Re-apply styles and alignments
data_align_left = Alignment(horizontal="left", vertical="center")
data_align_center = Alignment(horizontal="center", vertical="center")
for col_idx in range(1, 10):
cell = ws.cell(row=row_num, column=col_idx)
if col_idx in [2, 4, 5]:
cell.alignment = data_align_left
else:
cell.alignment = data_align_center
changed = True
if changed:
try:
wb.save(FILE_NAME)
print("\n[УСПЕХ] Все смещенные строки в Excel были автоматически исправлены!")
print(f"Файл успешно сохранен: {FILE_NAME}\n")
except PermissionError:
print("\n[ОШИБКА] Не удалось сохранить файл. Пожалуйста, убедитесь, что файл закрыт в Excel, и попробуйте снова.\n")
else:
print("Смещенных строк не обнаружено. Все данные соответствуют формату.")
if __name__ == "__main__":
fix_shifted_rows()