Я хочу создать диаграмму с помощью 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 параметр неверный?
Вам нужно убедиться, что вы используете версию 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 «Не перемещать и не изменять размер с ячейками»: