Могу ли я добавить ссылку на другой лист в Excel, созданный Dataframe? - PullRequest
0 голосов
/ 18 марта 2019

У меня есть код, где я пишу Excel с несколькими листами. Код читает mySql и пишет эти листы. Следовать:

    import pandas as pd
    import pymysql
    import os
    from FunctionsOilegal import connection, reportSittel, reportSittelByStatus

    def callReportAll(Status):
        cursor = ''
        cursor  = reportSittelByStatus(conn,Status)
        columns = [desc[0] for desc in cursor.description]
        data    = cursor.fetchall()
        dfAux   = pd.DataFrame(list(data), columns=columns)
        return dfAux

    def styleSheets(nome,defaux):
        header_format = workbook.add_format({
            'bold': True,
            'fg_color': '#9ABACC',
            'border': 1})
        worksheet = writer.sheets[nome]
        for col_num, value in enumerate(defaux.columns.values):
            worksheet.write(0, col_num , value, header_format)    

    conn= connection()
    cursor  = reportSittel(conn)
    columns = [desc[0] for desc in cursor.description]
    data    = cursor.fetchall()
    df      = pd.DataFrame(list(data), columns=columns)

    df1  = callReportAll("Error")
    df2  = callReportAll('Running')
    df3  = callReportAll('Processed')
    df4  = callReportAll('Protocoled')
    df5  = callReportAll('Received')
    df6  = callReportAll('Refused')

    conn.close()

    writer = pd.ExcelWriter('pandas_multiple.xlsx', engine='xlsxwriter' )

    df.to_excel(writer, sheet_name='BASE', index=False)
    df1.to_excel(writer, sheet_name='Error', index=False)
    df2.to_excel(writer, sheet_name='Running', index=False)
    df3.to_excel(writer, sheet_name='Processed', index=False)
    df4.to_excel(writer, sheet_name='Protocoled',index=False)
    df5.to_excel(writer, sheet_name='Received', index=False)
    df6.to_excel(writer, sheet_name='Refused', index=False)

    workbook  = writer.book

    styleSheets('BASE',df)
    styleSheets('Error',df1)
    styleSheets('Running',df2)
    styleSheets('Processed',df3)
    styleSheets('Protocoled',df4)
    styleSheets('Received',df5)
    styleSheets('Refused',df6)

    writer.save()

Первый лист пишет так:

enter image description here

Теперь я хочу, чтобы, когда пользователь щелкнул, например, всего «1», его перенаправили на лист с именем «Ошибка»

Возможно ли это?

1 Ответ

0 голосов
/ 19 марта 2019

Я создал это решение:

names = df.Status.tolist()
i=0
for colname in enumerate(names):
    print(colname)
    df.set_value(i, 'Click here', '=HYPERLINK("[pandas_multiple.xlsx]'+colname[1]+'!A1","Link")')
    i=i+1

В этом случае я читаю столбец Статус и создаю еще один столбец под названием «Нажмите здесь».HYPERLINK - это направление от листов с одинаковым именем colname [1], например Error и Running

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...