Доминировать в отчетности MS Office с Python (серия 2 частей)
вступление
В прошлый раз мы обсуждали «Почему», теперь пришло время обсудить, как. Эта серия основана на Python-pptx Библиотека, небольшая и отличная библиотека, но она не очень удобна для начинающих, мы постараемся сделать более дружелюбные в этой части.
Синтаксис
После установки библиотеки PIP установить Python-pptx
, вещи, возможно, ошеломляющие, если вы ориентируетесь в документации библиотеки, чтобы спасти вас за неприятностями. вещи!
Презентация ()
Первое, что вам нужно сделать, это импортировать презентацию (), это ядро того, что мы сделаем, вы можете открыть копию вашего шаблона, используя эту функцию в переменную для использования позже. Аргумент, который нуждается в функции, – это имя/путь презентации шаблона, лично я держу свои шаблоны в другом месте от того, где мой код находится по различной причине, если вы хотите знать, как использовать файловую систему или мои причины, вы можете проверить Эта статья Анкет Функция возвращает объект презентации PRS Анкет
from pptx import Presentation prs = Presentation('./market/data/temp.pptx')
Слайды
С первой части мы разбили презентацию в дерево иерархии, второй уровень – уровень слайдов, PRS.Slides
является итератируемой, которая позволяет вам пройти через слайды или доступа непосредственно, используя записи списка, начиная с 0 для первого слайда.
for sld in prs.slides: print(sld) print(prs.slides[0])
Формы
Действительно интересная часть этой иерархии – это формы. Я поговорил об этом, немного ушел в первая часть Из -за того, насколько это важно, так что познакомьтесь с этим, прежде чем мы обработаем. К форме можно получить доступ от одного объекта слайда, допустим, что мы заинтересованы в первом слайде, мы можем получить фигуры аналогично таким слайду, как это prs.slides [0] .shapes
Анкет Это возвращает иратируемый объект, Чтобы проверить конкретную форму, вы должны итерации в петле и сравнить с именем формы (вы назвали их на панели выбора внутри PowperPoing) или по номеру типа, чтобы получить определенный тип форм.
for shp in prs.slides[0].shapes: if shp.name == 'selectmeplz': print('hello world') if shp.shape_type == 3: print('I am a chart!!!')
Основные формы
Погрузившись вниз по фигурам, мы находим 3 основных типа, которые вам в основном понадобятся во всех презентациях. Первый – это основная форма или форма коробки, это названия, заголовки, нижние колонтитулы и так далее. Это очень простые, и вы только манипулируете текстом внутри них. SHP.Text
это метод для использования, вы можете получить текст внутри этой формы или вы можете подавать его новый текст, как это SHP.Text.
Графики
Диаграммы shp.chart
являются важной частью любой презентации и основной причины, по которой мы делаем аналитические презентации в первую очередь. Существуют разные виды диаграмм, но один из них более распространен, поэтому он будет покрыт здесь. Общий тип диаграмм называется категориальной диаграммой, это любая диаграмма, которая имеет категориальную ось, включает в себя планку и линейные диаграммы, одиночные или сложенные. Основная идея проста, вы создаете свою диаграмму в PowerPoint, добавляете любое форматирование или модификацию, а затем используйте Python PPTX, чтобы заполнить его.
Категорическая таблица состоит только из двух частей, категории и серии/с Для работы над этой таблицей вам нужно импортировать CategoryChartData
Функция, это возвращает объект диаграммы, как мы увидим. Допустим, у вас есть ваши данные в табличной форме, где ваш индекс или категориальная ось знают, это может быть текст, даты или числа, но они должны быть уникальными. Каждый столбец, который у вас оставил, можно рассматривать как серию в вашем таблице. Этот следующий код будет прояснить вещи больше:
from pptx.chart.data import CategoryChartData chart = shp.chart data = CategoryChartData() data.categories = df['your_index_or_main_axis'] for col in cols: data.add_series(col_name,df[col]) chart.replace_data(data)
Добавление сериала в ваш объект данных может быть сделан только для 1 серии или более, я делаю это в цикле, чтобы вы получили общую идею. Серия может быть разными данными о продажах компании по сравнению с датой, поэтому ваша диаграмма будет группой трендов с осью X в качестве даты и так далее. После того, как вы добавите свою серию и установите категориальную ось, вы замените данные, используя Заменить_дата
Метод диаграммы. Обратите внимание, что этот метод может добавить более одной серии, если ваша диаграмма ожидает только ограниченного числа, вы должны быть осторожны. Этот метод замены данных великолепен, так как диапазоны диаграммы и динамически изменяются без вашего ввода, так что вы можете заполнить ту же диаграмму 3 серии в одном слайде, а затем 5 в другом слайде без каких -либо изменений со своей стороны. Круто, верно?!
Столы
Таблицы SHP.Table
это сложная форма, объект Table – это скорее объект Excel, чем объект PowerPoint IMO. По какой -то причине объекты таблицы не изменяются динамически, как диаграммы, поэтому, если у вас есть таблица С 10 строками, если вы подаете его на 11 строк, он не будет добавлять и дополнительную строку, напротив, меньше данных не удаляет лишние строки/столбцы, вы наверняка сделаете некоторую очистку. В отличие от графиков, Вы не работаете с сериями или единым списком, скорее, вы работаете с отдельными ячейками, начиная с индекса (0,0). Таким образом, чтобы заполнить таблицу, вам нужно заполнить каждую ячейку ее данными! По крайней мере, это то, что я нашел до сих пор, Так что, если у вас есть лучший способ, скажите, пожалуйста,!
table = shp.table j = 1 # second column for i in range(0,len(table.rows)): table.cell(i,j).text = i*2
Мне нравится работать над таблицами в сфере столбцов, я пробегаю столбцы и называю функцию, чтобы заполнить ряды этого столбца, это мое предпочтение в конце, и вы можете сделать это другим способом, если хотите. Для получения дополнительного контроля по форматированию шрифта каждой ячейки вы можете взглянуть на это отвечать
Поздравляем
Теперь у вас есть основные инструменты для автоматизации этого скучного отчета, используя только небольшой сценарий. Конечно, вы не ограничены этими инструментами, и вы можете больше настроить свои презентации, и вы можете свободно исследовать и поделиться с нами. В следующей части этой серии я буду проходить прохождение простого отчета, чтобы поделиться своим потоком и полезными функциями, которые значительно облегчают мою жизнь, оставались в тон.
Доминировать в отчетности MS Office с Python (серия 2 частей)
Оригинал: “https://dev.to/as3fn/dominate-ms-office-reporting-with-python-part2-g48”