Есть ли способ удалить или изменить диаграмму xlsx (Excel) в Python с помощью openpyxl?

#python #excel #charts #openpyxl #xlsx

Вопрос:

Я не могу найти способ изменить или удалить существующий график Excel в существующей книге.

Это единственный код, которого я мог достичь:

 from openpyxl.chart import AreaChart, Reference, Series
import openpyxl as opyxl

def CreateGraphAC(wb, ws, rows, columns):
    chart = AreaChart()
    chart.title = "Area Chart"
    chart.style = 13
    chart.x_axis.title = 'Test'
    chart.y_axis.title = 'Percentage'

    cats = Reference(ws, min_col=1, min_row=2, max_row=rows)
    data = Reference(ws, min_col=2, min_row=1, max_col=columns, max_row=rows)

    chart.add_data(data, titles_from_data=True)
    chart.set_categories(cats)

    ws.add_chart(chart, "F1")
    wb.save('test.xlsx')

wb = opyxl.load_workbook('test.xlsx')
allSheetNames = wb.sheetnames
ws = wb.active
CreateGraphAC(wb, ws, 2, 2)
 

Единственное, что я обнаружил, это то, что вы можете получить список графиков на листе с:

 ws._charts
 

Есть какие-нибудь предложения? Заранее благодарю вас всех.

Комментарии:

1. ws._charts вот где вам следует искать. В настоящее время это частный API, потому что мы не разработали, как следует обрабатывать существующие диаграммы, но они являются объектами диаграмм openpyxl.

2. Есть ли способ перейти ws._charts[0] в другую строку и столбец? Если да, то я решил проблему. Или можно удалить ws._charts[0]?

3. Я не совсем понимаю, что ты имеешь в виду. Если вы имеете в виду положение графика, да, просто измените якорь.

Ответ №1:

Решил сам

Используйте del worksheet._charts[number] с a workbook.save('file.xlsx') и создайте новую диаграмму с измененными параметрами.