Openpyxl中的超链接样式

时间:2015-09-26 21:40:26

标签: python openpyxl

在openpyxl中,您可以设置如下的超链接:

cell.hyperlink = r'..\somedir\somefile.txt'

但是,这不适用于在Excel中设置超链接时所获得的超链接样式。您可以应用带有蓝色文本和下划线的样式,但是当您打开文档时,访问过的超链接不会更改颜色。

有没有办法用openpyxl指定一个超链接样式,就像Excel中的超链接一样?

5 个答案:

答案 0 :(得分:1)

import openpyxl
from openpyxl.styles import Font, Color, colors
#...

# alternative 1: set hyperlink property to cell
def link_1(cell, link, display=None):
    cell.hyperlink = link
    cell.font = Font(u='single', color=colors.BLUE)
    if display is not None:
        cell.value = display

# alternative 2: use Excel formula HYPERLINK
def link_2(cell, link, display='link'):
    cell.value = '=HYPERLINK("%s", "%s")' % (link, display)
    cell.font = Font(u='single', color=colors.BLUE)

# examples
link_1(ws['B2'], '#sheet3!A1', 'link_text') # internal link
link_2(ws['B3'], '#sheet3!A1', 'link_text') # internal link
link_1(ws['B4'], 'https://www.google.com/', 'Google') # web link

答案 1 :(得分:1)

您必须更改样式属性

cell.style = "Hyperlink"

答案 2 :(得分:0)

尝试添加像这样的超链接样式

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
  @autoreleasepool {

    Byte bytes[8];
    bytes[0] = 0xFE; 
    bytes[1] = 0x03; 
    bytes[2] = 0x01; 
    bytes[3] = 0x00;
    bytes[4] = 0xB4; 
    bytes[5] = 0x18; 
    bytes[6] = 0x01; 
    bytes[7] = bytes[1] ^ bytes[2] ^ bytes[3] ^ bytes[4] ^ bytes[5] ^ bytes[6];

    NSData *data = [NSData dataWithBytes:bytes length:sizeof(bytes)];
    NSLog(@"%@", data);

    NSString *str = [[NSString alloc] initWithBytes:&bytes length:8 encoding:NSUTF8StringEncoding];

    NSLog(@"%@", str);
  }
  return 0;
}

答案 3 :(得分:0)

我使用Font并且它有效。

from openpyxl.styles import Font
hyperlink = Font(underline='single', color='0563C1')
# ...
cell.font = hyperlink

应该有一个名为Hyperlink的{​​{3}},但我还没有设法让它发挥作用......

答案 4 :(得分:0)

这对我有用:

rxjs

“ theData”是人们在单元格中看到的显示值。