write_url(row, col, url[, cell_format[, string[, tip]]])
向工作表单元格写入超链接。
参数:
write_url()方法用于向工作表单元格写入超链接。url包含两个元素:显示的字符串和不显示的链接。显示的字符串与链接一样除非指定了其他字符串。
行-列和A1风格表示法都支持。
cell_format()参数用于向单元格应用格式。这个参数是可选的。由于没有格式的超链接看起来不像链接,因此默认会使用以下Excel超链接样式。如有需要,你可以像这样访问格式:
worksheet.default_url_format
支持的web风格URI有: http://, https://, ftp:// 和 mailto: :
worksheet.write_url('A1', 'ftp://www.python.org/')
worksheet.write_url('A2', 'http://www.python.org/')
worksheet.write_url('A3', 'https://www.python.org/')
worksheet.write_url('A4', 'mailto:[email protected]')
write()方法可以识别所有URI类型, 所以以下是等价的:
worksheet.write_url('A2', 'http://www.python.org/')
worksheet.write ('A2', 'http://www.python.org/') # 一样。
你可以使用string参数显示默认替代字符串:
worksheet.write_url('A1', 'http://www.python.org', string='Python home')
注意
如果你希望写入其他单元格的数据,比如数字或公式,你可以调用write_*()来覆盖该单元格:
worksheet.write_url('A1', 'http://www.python.org/')
# 用公式覆盖URL字符串。 该单元格还是一个链接。
worksheet.write_formula('A1', '=1+1', worksheet.default_url_format)
支持两种本地URI:internal: 和external: 。它们用于指向内部工作表引用或外部工作表引用的超链接:
# 链接至位于当前工作表的单元格。
worksheet.write_url('A1', 'internal:Sheet2!A1')
# 链接至位于其他工作表的单元格。
worksheet.write_url('A2', 'internal:Sheet2!A1:B2')
# 工作表名含有空格的应当用单引号包围。
worksheet.write_url('A3', "internal:'Sales Data'!A1")
# 链接至其他Excel工作簿。
worksheet.write_url('A4', r'external:c:\temp\foo.xlsx')
# 链接至位于其他工作簿的工作表单元格。
worksheet.write_url('A5', r'external:c:\foo.xlsx#Sheet2!A1')
# 链接至其他工作簿中拥有相对连接的工作表。
worksheet.write_url('A7', r'external:..\foo.xlsx#Sheet2!A1')
# 链接至其他工作簿中拥有网络连接的工作表。
worksheet.write_url('A8', r'external:\\NET\share\foo.xlsx')
工作表引用通常是 Sheet1!A1 样式的。你也可以用标准的Excel表示法连接到工作表选区:Sheet1!A1:B2。
使用外部链接时工作簿名和工作表名必须以#号隔开:external:Workbook.xlsx#Sheet1!A1'。
你也可以链接至目标工作表中的命名区域。比如说你给工作簿c:\temp\foo.xlsx中的一块选区命名为my_name,你可以像下面这样链接到它:
worksheet.write_url('A14', r'external:c:\temp\foo.xlsx#my_name')
Excel要求名称包含空格或非字母、数字类型字符的工作表用单引号括起来像'Sales Data'!A1。
链接至网络文件也是支持的。网络文件通常以两个反斜线开头比如 \\NETWORK\etc 。为了用单引号或双引号括住它,你得转义反斜线,'\\\\NETWORK\\etc' 或者用原始字符串 r'\\NETWORK\etc'。
或者,你可以使用正斜线来避免这种符号问题。它们会内部转换为反斜线:
worksheet.write_url('A14', "external:c:/temp/foo.xlsx")
worksheet.write_url('A15', 'external://NETWORK/share/foo.xlsx')
注意
XlsxWriter会将这些字符转义为Excel要求的: \s '' < > \ [ ] ` ^ { },除非URL已经包含了%xx样式的转义。在这种情况下会假定URL已经被用户正确的转义,并会直接传递给Excel。
注意
Excel将超链接和定位(anchor)/位置限制为各255个字符串。
这是个向工作表写入超链接的例子。
###############################################################################
#
# Example of how to use the XlsxWriter module to write hyperlinks
#
# Copyright 2013-2017, John McNamara, [email protected]
#
import xlsxwriter
# 创建一个新工作簿并添加一个工作表。
workbook = xlsxwriter.Workbook('hyperlink.xlsx')
worksheet = workbook.add_worksheet('Hyperlinks')
# 为第一列设置格式
worksheet.set_column('A:A', 30)
# 添加一个替代文本格式。
red_format = workbook.add_format({
'font_color': 'red',
'bold': 1,
'underline': 1,
'font_size': 12,
})
# 写入一些超链接
worksheet.write_url('A1', 'http://www.python.org/') # 隐式格式
worksheet.write_url('A3', 'http://www.python.org/', string='Python Home')
worksheet.write_url('A5', 'http://www.python.org/', tip='Click here')
worksheet.write_url('A7', 'http://www.python.org/', red_format)
worksheet.write_url('A9', 'mailto:[email protected]', string='Mail me')
# 写入一个非超链接的URL
worksheet.write_string('A11', 'http://www.python.org/')
workbook.close()