如何在 xlsxwriter add_series() 中从行 col 表示法转换为 A1 表示法

how to get from row col notation to A1 notation in xlsxwriter add_series()

我对如何将行 col 转换为 A1 表示法并在 XlsxWriter 图表的 add_series() 方法中使用它并非一无所知。

请参考以下代码:

 print "Drawing Simultaneous Busy Cores"
    writer.targetWrite('simultaneous_busy_cores', 'weighted_average', *write_data)
    row = writer.getRow('simultaneous_busy_cores')
    str1_cat = xl_rowcol_to_cell(6, 1, row_abs=True, col_abs=True)
    str2_cat = xl_rowcol_to_cell(6, 8, row_abs=True, col_abs=True)
    str1_val = xl_rowcol_to_cell(row-1, 1, row_abs=True, col_abs=True)
    str2_val = xl_rowcol_to_cell(row-1, 8, row_abs=True, col_abs=True)
    print str1_cat
    print str2_cat
    print str1_val
    print str2_val
    dict_series = {
             'name':       'simultaneous_busy_cores',
             'categories': '=simultaneous_busy_cores!str1_cat:str2_cat',
             'values':     '=simultaneous_busy_cores!str1_val:str2_val',
             'data_labels': {'percentage': True, }
             }
    chart1.add_series(dict_series)
    chart1.set_title({'name': 'simultaneous_busy_cores'})
    chart1.set_style(10)
    target_sheet.insert_chart('K2', chart1, {'x_offset': 25, 'y_offset': 10})

str_cat 和 str_val 的值是:

Drawing Simultaneous Busy Cores
$B
$I
$B
$I

感谢任何帮助 TIA!

要回答直接问题,您可以使用 string.format()% 将变量值插入到字符串中:

'=simultaneous_busy_cores!%s:%s' % (str1_cat, str2_cat),

但是,由于 XlsxWriter 已经支持类别和值的列表语法,所以这比必要的工作要多:

dict_series = {
    'name':       'simultaneous_busy_cores',
    'categories': ['simultaneous_busy_cores', 6, 1, 6, 8],
    'values':     ['simultaneous_busy_cores', row-1, 1, row-1],
    'data_labels': {'percentage': True, }
}

有关详细信息,请参阅 add_series() 上的文档。