在Excel中使用xlsxwriter创建图表,该图表在Python中不随单元格移动或调整大小

时间:2019-06-11 17:22:36

标签: python object charts position xlsxwriter

目标

我想通过在将图表插入工作表中时让xlsxwriter选择“不移动单元格或不随单元格调整大小”选项,在Python中使用xlsxwriter创建不随单元格移动或随单元格调整大小的图表。

在Excel中,此选项位于: 格式图表区域 图表选项 大小与属性 性质 不要移动或调整单元格大小

默认情况下,使用xlsxwriter创建图表时,选择了“使用单元格移动和调整大小”选项。

但是,这在过滤数据时会出现问题。如果隐藏或过滤位于图表顶部的数据,则图表将消失或调整大小。

帮助文档

我阅读了帮助文档,该文档显示了如何在图像上执行此操作,它们表明同样适用于图表。但是,我无法使其正常运行。帮助文档链接:https://xlsxwriter.readthedocs.io/working_with_object_positioning.html

最少的可复制代码

chart = workbook.add_chart({'type': 'line'})

chart.add_series({

    'name':       [sheet_name, name_row, name_col],

    'categories': [sheet_name, first_row, x_data_col, max_row, x_data_col],

    'values':     [sheet_name, first_row, col, max_row, col],
})


worksheet.insert_chart(position, chart, {'object_position': 3})

问题

仍然可以正确创建统计图,但没有将object_position设置为3。由于某些原因,正在创建的统计图仍可以移动并随单元格变化,这与object_position 1相对应。设置了object_position参数错误?

1 个答案:

答案 0 :(得分:1)

添加此功能后,您需要确保使用的XlsxWriter版本> = 1.1.7。

此后它应该工作:

import xlsxwriter

workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet()

chart = workbook.add_chart({'type': 'line'})

worksheet.write_column('A1', [2, 4, 6, 8, 10])

chart.add_series({'values': '=Sheet1!$A$1:$A$5'})

worksheet.insert_chart('A7', chart, {'object_position': 3})

workbook.close()

输出是选项3“不要移动或调整单元格大小”:

enter image description here