Создайте диаграмму с помощью xlsxwriter в Excel, который не перемещается и не изменяет размер с помощью ячеек в Python - PullRequest
1 голос
/ 11 июня 2019

Цель

Я хочу создать диаграмму с помощью 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 Ответ

1 голос
/ 11 июня 2019

Необходимо убедиться, что вы используете версию 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

...