Нужно исправить эту чаться кода:
'''
def save_to_excel(data, output_file):
    if os.path.exists(output_file):
        existing_wb = load_workbook(output_file)
        existing_ws = existing_wb.active
        start_row = existing_ws.max_row + 1
    else:
        existing_wb = None
        start_row = 2  # Начинаем с 2, чтобы оставить место для заголовков

    new_rows = []
    for product in data:
        base_row = {
            'Category': product['Category'],
            'Name': product['Name'],
            'Article': product['Article'],
            'Availability': product['Availability'],
            'Price': product['Price'],
        }

        if product['Analogs']:
            for analog in product['Analogs']:
                analog_row = base_row.copy()
                analog_row.update({
                    'Brand': analog['Brand'],
                    'Analog Article': analog['Article'],
                    'Analog Price': analog['Price'],
                    'Analog Availability': analog['Availability'],
                })
                new_rows.append(analog_row)
        else:
            new_rows.append(base_row)

    new_df = pd.DataFrame(new_rows)

    if existing_wb:
        with pd.ExcelWriter(output_file, engine='openpyxl', mode='a', if_sheet_exists='overlay') as writer:
            new_df.to_excel(writer, index=False, header=False,
                            startrow=start_row - 1, sheet_name='Products')
            worksheet = writer.sheets['Products']
    else:
        with pd.ExcelWriter(output_file, engine='openpyxl', mode='w') as writer:
            new_df.to_excel(writer, index=False, sheet_name='Products')
            worksheet = writer.sheets['Products']

    if existing_wb:
        existing_wb.close()

    try:
        # Объединение ячеек и форматирование
        row = start_row  # Start from the first new row
        while row <= worksheet.max_row:
            start_row = row
            while row <= worksheet.max_row and worksheet.cell(row=row, column=1).value is not None:
                row += 1
            end_row = row - 1
            for col in range(1, 6):  # Первые 5 столбцов (A-E)
                if start_row < end_row:
                    worksheet.merge_cells(
                        start_row=start_row, end_row=end_row, start_column=col, end_column=col)
                cell = worksheet.cell(row=start_row, column=col)
                cell.alignment = Alignment(vertical='center')
            row = end_row + 1

        # Автоматическое выравнивание по ширине
        for column in worksheet.columns:
            max_length = 0
            column = [cell for cell in column]
            for cell in column:
                try:
                    if len(str(cell.value)) > max_length:
                        max_length = len(cell.value)
                except:
                    pass
            adjusted_width = (max_length + 2)
            worksheet.column_dimensions[column[0]
                                        .column_letter].width = adjusted_width

        logging.info(f"Данные успешно сохранены в файл: {output_file}")
    except Exception as e:
        logging.error(f"Ошибка при сохранении данных в файл: {e}")
'''

1. Автоматическое выравнивание по ширине не срабатывает. Оно обязательно должно работать!
2. Строки дублирующийся с данными о товаре нужно объединить и поместить в центр. Просто при сканировании аналогов, нужно чтобы программа пересчитала количество аналогов и объединила столько строк с данными о товаре. Если на странице с которой выгружаю данные 0 или 1 аналог товара, то объединять строки этого товара не нужно. Если больше одного аналога, то нужно объединить строки с товаром, чтобы они не дублировались! 

Убедись в своём ответе, будь внимателен и умён при ответе.