Создайте диаграмму с помощью xlsxwriter в Excel, которая не перемещается и не изменяется с ячейками в Python

Цель

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
536
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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 «Не перемещать и не изменять размер с ячейками»:

Другие вопросы по теме