Пробую ещё раз залить, т.к. прошлый раз залилось с ошибкой
This commit is contained in:
@@ -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()
|
||||
Reference in New Issue
Block a user