我想通过在将图表插入工作表中时让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参数错误?
答案 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“不要移动或调整单元格大小”: