xlsxwriter:如何在表中放置内部超链接,并将内容格式化为整数

时间:2014-02-20 17:59:11

标签: python excel xlsxwriter

下面的代码段工作正常(包括链接) - 除了这是一个包含大量链接的大表,最后的工作表加载了警告(“此单元格中的数字格式为文本或前面有撇号” )。这是正确的,但write方法不会在最后一个参数中接受整数,而write_number()似乎不接受像write方法那样的超链接参数。警告可以在excel中手动修补,但这不是一个真正的选择。我宁愿将其格式化为整数,但如果我可以停止在生成的Excel文件中获取所有警告,则会满意。我尝试了各种格式设置并尝试了各种选项,包括在工作簿创建中添加'{'strings_to_numbers':True}'。

    stream = StringIO()
    workbook = xlsxwriter.Workbook(stream, {'strings_to_numbers': True})

    integer_format = workbook.add_format({'num_format': '#,##0'})
    linkable_sheet = workbook.add_worksheet('linkable_sheet')
    main_sheet = workbook.add_worksheet('main_sheet')       
    main_sheet.add_table(0,0,2,2)
    main_sheet.write(1, 0, 'internal:linkable_sheet!A1', integer_format, '100')

    workbook.close() 
    stream.seek(0)
    return stream.getvalue()

由于

1 个答案:

答案 0 :(得分:4)

在这种情况下,XlsxWriter可能应该接受整数/浮点数。我将在未来版本中考虑允许这样做。

与此同时,文档中推荐的解决方法是使用虚拟(或无)字符串编写url,然后使用您希望的任何类型/数据覆盖url的字符串部分。

尝试按如下方式修改示例:

...
main_sheet.write(1, 0, 'internal:linkable_sheet!A1', integer_format)
main_sheet.write(1, 0, 100,                          integer_format)
...