import tkinter as tk
from tkinter import ttk, messagebox
import psycopg2
import pandas as pd
from openpyxl import load_workbook
from datetime import datetime

# Создаем подключение к базе данных PostgreSQL
conn = psycopg2.connect(
    host="10.30.14.15",
    port="0",
    database="fo",
    user="p",
    password="4"
)

def execute_query():
    selected_item = combo_box.get()
    if selected_item == "Январь-Февраль":
        query = \
            "SELECT mh1.unit_name, mh2.unit_name, c.column_code, c.column_name, r.row_code, r.row_name, " \
            "SUM(CASE WHEN c.column_code in ('6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16') THEN s.value " \
            "ELSE s.value " \
            "END) summa " \
            "FROM mo_hierarchy mh1 " \
            "JOIN mo_hierarchy mh2 ON mh1.id = mh2.parent_id " \
            "JOIN documents d ON d.ou_id = mh2.id " \
            "JOIN statdata s ON s.doc_id = d.id " \
            "JOIN rows r ON r.id = s.row_id " \
            "JOIN columns c ON c.id = s.col_id " \
            "WHERE d.form_id = '160' AND d.dtype = '1' AND d.period_id = '102' " \
            "AND mh2.parent_id IN (10, 1508, 4, 3578, 178, 6, 8, 1509, 15, 282,35, 299, 44, 48, 307, 320, 351, 59, " \
            "180, 376, 72, 76, 78, 420, 81, 434, 480, 501, 588, 89, 617, 104, 130, 132, 145, 699, 730, 764, 153, 1336, " \
            "811, 9598, 822, 843, 160, 162, 207, 217, 243, 328, 389, 416, 465, 517, 554, 640, 665, 705, 732, 760, 788, 846) " \
            "AND s.table_id BETWEEN 1304 AND 1305 " \
            "AND s.col_id IN (8956, 8957, 8958, 8959, 8960, 8961, 8962, 8963, 8964, 8965, 8966, 8967, " \
            "8974, 8975, 8976, 8977, 8978, 8979, 8980, 8981, 8982, 8983, 8984, 8985, 8986, 8987, 8988) " \
            "GROUP BY mh1.unit_name, mh2.unit_name, c.column_index, c.column_code, c.column_name, r.row_index, r.row_code, r.row_name " \
            "ORDER BY mh1.unit_name, mh2.unit_name, c.column_index, c.column_code, r.row_index, r.row_code; "

    else:
        return

    try:
        # Создаем курсор для выполнения SQL-запросов
        cursor = conn.cursor()

        # Выполняем SQL-запрос
        cursor.execute(query)

        # Получаем результаты запроса
        results = cursor.fetchall()

        df = pd.DataFrame(results,
                          columns=["mh1.unit_name", "mh2.unit_name", "c.column_code", "c.column_name", "r.row_code",
                                   "r.row_name", "summa"])
        df["c.column_code"] = pd.to_numeric(df["c.column_code"], errors="coerce")

        column_names = ["mh1.unit_name", "mh2.unit_name", "c.column_code", "c.column_name", "r.row_code", "r.row_name",
                        "summa"]
        df.columns = column_names
        pivot_table = pd.pivot_table(df, values="summa",
                                     index=["mh1.unit_name", "mh2.unit_name", "r.row_name", "r.row_code"],
                                     columns=["c.column_code"])

        template_path = r"C:\test\ks_fund\template.xlsx"
        wb = load_workbook(filename=template_path)
        sheet_name = "Sheet1"
        sheet = wb[sheet_name]

        table_data = pivot_table.reset_index().values.tolist()
        start_cell = "A6"
        for row in table_data:
            sheet.append(row)

        # Генерируем название файла с текущей датой
        today = datetime.today().strftime("%Y-%m-%d")
        current_time = datetime.now().strftime("%H-%M")
        filename = f"коечный_фонд_{today}_{current_time}.xlsx"

        # Сохраняем рабочую книгу в файл
        wb.save(filename)
        print(f"Результаты сохранены в файл: {filename}")

        # Закрываем курсор и подтверждаем изменения в базе данных
        cursor.close()
        conn.commit()

        messagebox.showinfo("Отчет сформирован успешно", "Запрос выполнен успешно и результаты сохранены в файл в папке программы")
    except (Exception, psycopg2.Error) as error:
        print("Ошибка при выполнении SQL-запроса:", error)


# Создаем графический интерфейс
window = tk.Tk()
window.title("Формирование данных по коечному фонду круглосуточного стационара")
window.geometry("500x200")
window.resizable(False, False)
# Создаем ComboBox для выбора пункта
combo_box = ttk.Combobox(window)
combo_box['values'] = ["Январь-Февраль", "Январь-Март", "Январь-Апрель", "Январь-Май", "Январь-Июнь", "Январь-Июль",
                       "Январь-Август", "Январь-Сентябрь", "Январь-Октябрь", "Январь-Ноябрь", "Январь-Декабрь", ]
combo_box.pack()

# Создаем кнопку для выполнения запроса
execute_button = tk.Button(window, text="Выполнить запрос", command=execute_query)
execute_button.pack()

# Запускаем главный цикл событий
window.mainloop()

Как мне записать на другой лист excel агрегированные данные, полученные из sql запроса ?