Добавление гиперссылки в ячейку с текстом с помощью xlwt

Я хочу добавить URL-адрес в качестве ссылки под текстом в ячейке Excel, чтобы пользователь мог посетить сайт. Я пытаюсь, но это не работает. Пожалуйста помоги

base = xlwt.Workbook()
for k,v in MainDict.items():
    base.add_sheet(k)
    xlwt.add_palette_colour("custom_colour", 0x21)
    base.set_colour_RGB(0x21, 251, 228, 228)
    style = xlwt.easyxf('pattern: pattern solid, fore_colour custom_colour;font : bold on')
    style1 = xlwt.easyxf('font : underline single')
    index = MainDict.keys().index(k)
    ws = base.get_sheet(index)
    col=0
    for sk in MainDict[k].keys():
        ws.write(0,col,sk.upper(),style)
        col+=1
        row =1
        for mk in MainDict[k][sk].keys():
            for lk,lv in MainDict[k][sk][mk].items():
                for items in lv:
                    ws.write(row,col-1,(items + str(Formula('HYPERLINK("%s")'%mk))))
                    row+=1
base.save('project2.xls')

person Raghav Shaligram    schedule 25.07.2014    source источник
comment
В чем проблема? не могли бы вы добавить требуемое и получить результат?   -  person Gaurav Jain    schedule 25.07.2014


Ответы (1)


Вам нужно сделать текст частью Formula, & поможет с конкатенацией. Пример:

import xlwt

wb = xlwt.Workbook()
ws = wb.add_sheet('test')

ws.write(0, 0, xlwt.Formula('"test " & HYPERLINK("http://google.com")'))

wb.save('test.xls')
person alecxe    schedule 25.07.2014
comment
Я использовал для элементов в lv: ws.write(row,col-1,Formula('%s & HYPERLINK(%s)'% (items,lk))) #ws.write(row,col-1,Formula( 'HYPERLINK(%s)'%mk)) row+=1 Теперь пишет Исключение: строка длиннее 255 символов - person Raghav Shaligram; 25.07.2014
comment
@RaghavShaligram это ограничение xls Excel, см. groups.google.com/ форум/#!topic/python-excel/Vvu50inITNA. - person alecxe; 25.07.2014
comment
Так что у меня есть какие-либо доступные варианты, чтобы сделать эту работу. В противном случае Xlwt пишет текст идеально. Указанный %s вызывает ошибку - person Raghav Shaligram; 25.07.2014
comment
Можно выделить только ссылку в тексте - person Raghav Shaligram; 25.07.2014
comment
Как можно записать строку, где test также является переменной? - person Phillip; 08.03.2016
comment
@Phillip использует форматирование строк, например. xlwt.Formula('"%s " & HYPERLINK("http://google.com")' % your_variable).. - person alecxe; 08.03.2016
comment
@alecxe Я получаю ту же ошибку, потому что мне нужно заменить текст ссылки Google также переменной: xlwt.Formula(' %s & HYPERLINK(' + link + ')' % name) - person Phillip; 08.03.2016
comment
формула = 'HYPERLINK({}, {})'.format(link, title) ws.write(0, 0, xlwt.Formula(formula)) будет методом использования переменной как для ссылки, так и для заголовка, где ссылка не видна - person Phillip; 09.03.2016