Это зависит от того, как гиперссылки записаны в исходных файлах Excel, и от того, какой редактор Excel вы используете. read_excel
вернет отображаемый текст, например, если у вас есть гиперссылка на https://www.google.com
, а диплейный текст просто google
, тогда нет никакой возможности сохранить ссылку с пандами, так как в вашем распоряжении будет только google
dataframe.
Если отдельное отображаемое имя не задано (или отображаемое имя совпадает с гиперссылкой) и вы используете xlsxwriter
(engine='xlsxwriter'
), тогда вывод to_excel
будетавтоматически конвертируется в гиперссылки (потому что начинается с 'http://' или любой другой схемы) (начиная с версии 1.1.5 xlsxwriter).
Если вы знаете, что все ваши гиперссылки являются ссылками 'http://' без прав доступа, а отображаемое имя (если отличается от ссылки) является просто путем URL-адреса, тогда вы можете добавить суффикс' http://' иВы получите гиперссылки в файле Excel:
combined.iloc[combined[~combined.iloc[:,0].str.startswith('http')].index,0] = 'http://' + combined.iloc[combined[~combined.iloc[:,0].str.startswith('http')].index,0]
combined.to_excel("c.xlsx", header=False, index=False, engine='xlsxwriter')
Универсальное решение без панд с использованием
openpyxl
показано в
этот ответ натот же самый вопрос, откуда вы взяли решение для панд. Чтобы скопировать и гиперссылки, вам нужно просто добавить следующие строки в функцию
copySheet
:
if cell.hyperlink is not None:
newCell.hyperlink = copy(cell.hyperlink)