使用= HYPERLINK和XlsxWriter包装文本

时间:2018-08-14 16:57:30

标签: python xlsxwriter

我正在使用Excel的= HYPERLINK函数在XlsxWriter中编写超链接。我没有使用write_url(),因为我的标签页名称以数字开头,并且我还需要显示一个“友好的”名称而不是超链接。 (显示友好名称似乎不适用于write_url()的{​​{1}}关键字。)超链接工作正常,但由于某些原因,即使我设置了{{1, }}到'internal:...'。如您在顶部图片中看到的,Excel显示设置了“环绕文字”(显示为灰色),但未包裹文字。如果我单击“自动换行”以取消选择它,然后再次单击以重新选择它,则它确实将自动换行,如底部图片所示。

我正在使用xlsxwriter 1.0.2和Excel 2016。

'text_wrap'

Link not wrapped

Link wrapped

2 个答案:

答案 0 :(得分:1)

您可以使用worksheet.write_url()方法,然后使用worksheet.write()添加格式和文本,同时保留超链接。

下面的代码产生包装的文本。

import xlsxwriter

wb = xlsxwriter.Workbook('Wrap.xlsx')

ws = wb.add_worksheet('Test1')

wrap = wb.add_format({'text_wrap': True})

ws.write_url('A1',  'internal:Sheet1!A1')
ws.write('A1',  "A really long name here that does not wrap", wrap)
ws.write('B1', 'Bye')

wb.add_worksheet('Sheet1')
wb.close()

预期输出:

Expected Output

答案 1 :(得分:1)

  

显示一个好记的名字似乎不适用于write_url()的'internal:...'关键字。

它可以:

import xlsxwriter

wb = xlsxwriter.Workbook('Wrap.xlsx')
ws = wb.add_worksheet('Test1')

wrap = wb.add_format({'text_wrap': True})

ws.write_url('A1', 'internal:Sheet1!A1', wrap,
             "A really long name here that does not wrap")
ws.write('B1', 'Bye')

wb.add_worksheet('Sheet1')
wb.close()

输出:

enter image description here