Как автоматически уменьшить диапазон графика? - PullRequest
2 голосов
/ 03 апреля 2019

Прежде всего, извините за мой плохой английский, так как это не первый язык.Я недавно начал изучать Python и пытаюсь разработать «простую» программу, но столкнулся с проблемой.

Я использую xlwings для модификации и взаимодействия с Excel.Я хочу достичь (или узнать, возможно ли это):

Я отлично смотрю данные и строю график.Однако этот график иногда имеет, например, 20 значений для оси X, а в других случаях, скажем, 10 значений для оси X, таким образом, оставляя 10 #NA пустых мест.Исходя из этого, я хочу настроить график так, чтобы он отображал только 10 значений, изменяя диапазон, который формирует график.

Функция get_prod_hours() определяет, сколько значений я хочу получить по оси X:

def get_prod_hours():
    """From the input gets the production hours to adapt the graphs"""
    dt = wb.sheets['Calculatrice']
    return dt.range('E24').value

Исходя из значения, полученного из функции, я должен изменить диапазон значений на графике (уменьшив его).

Решения, например, создание графиков с нуля, не подходят, потому что яхотел бы изменить только диапазон графика, потому что файл Excel является «стандартным» для моей компании.

Я надеюсь на что-то вроде:

Столбец A в Excel со значениями: 1, 2, 3, 4, 5 и получите от get_prod_hours() значение 5, так что мой график будет иметь только 5 точек, а не, например, 6, из которых одна # NA.

Большое спасибо, и извините за стену текста.

1 Ответ

0 голосов
/ 03 апреля 2019

API xlwings не предлагает много опций для диаграмм (см. https://docs.xlwings.org/en/stable/api.html?highlight=charts#xlwings.main.Charts).

Попробуйте найти диаграмму в wb.sheets[0].charts.

. Затем диапазон можно изменить с помощью

range = xw.Range((1,1), (get_prod_hours(),1))
set_source_data(wb.sheets[0].range(range))

Но, глядя на API и зная, сколько параметров есть в диаграммах Excel, API кажется слишком тонким.

Если это не работает, можно добавить VBA.макрос, который изменяет диаграмму и вызывает ее. См. Как мне вызвать макрос Excel из Python, используя xlwings?

...