Для форматирования ячеек с гиперссылками в Excel необходимо использовать специальный формат ячеек. В вашем коде вы создаете формат таблицы в переменной `table_format`, но этот формат не содержит опций для гиперссылок.
Для создания формата ячеек с гиперссылками можно использовать следующий код:
link_format = workbook.add_format({ # type: ignore
'font_color': 'blue',
'underline': 1,
'valign': 'top',
'text_wrap': True,
})
Затем, при записи данных в таблицу, можно указать этот формат для столбца с гиперссылками:
writer.sheets[sheet_name].set_column('C:C', None, link_format)
Эта строка кода устанавливает формат `link_format` для столбца "Ссылка" (столбец "C").
В итоге, обновленный код будет выглядеть так:
import pandas as pd
sheet_name = 'sheet 1'
width_list = [5, 25, 25, 15, 25, 30, 20]
data_list = [{
'#': 1,
'Наименование': 'Тестовая страница 1',
'Ссылка': 'https://test0000-link.ru/test-00001.html',
'Автор': 'Автор 1',
'Описание': 'Тестовое задание. Тестовое задание 1',
'Примечание': '-',
'E-Mail': 'не указан',
},
{
'#': 2,
'Наименование': 'Тестовая страница 2',
'Ссылка': 'https://test0000-link.ru/test-00002.html',
'Автор': 'Автор 2',
'Описание': 'Тестовое задание. Тестовое задание 2',
'Примечание': '-',
'E-Mail': 'не указан',
}
]
df_ = pd.DataFrame(data_list)
writer = pd.ExcelWriter('test.xlsx')
workbook = writer.book
header_format = workbook.add_format({ # type: ignore
'bold': True,
'text_wrap': True,
'valign': 'top',
'align': 'center',
'fg_color': '#D7E4BC',
'border': 1})
table_format = workbook.add_format({ # type: ignore
'valign': 'top',
'text_wrap': True,
'fg_color': '#E3DDDD'})
link_format = workbook.add_format({ # type: ignore
'font_color': 'blue',
'underline': 1,
'valign': 'top',
'text_wrap': True,
})
df_.to_excel(writer, sheet_name=sheet_name, index=False)
for col_num, value in enumerate(df_.columns.values):
writer.sheets[sheet_name].write(0, col_num, value, header_format)
for i in range(7):
writer.sheets[sheet_name].set_column(i, i, width_list[i], table_format)
writer.sheets[sheet_name].set_column('C:C', None, link_format)
writer.close()