Редактирование надписи в powerpoint python через win32com client

Обновлено: 05.07.2024

Поскольку я немного продвинулся в решении проблемы, так как я разместил этот вопрос, я счел необходимым разбить его на две части, чтобы сохранить ясность.

  1. Как я могу манипулировать цветами фигур в PowerPoint с помощью Python и win32com.client?
  2. Как проверить объекты COM в Python с помощью dir () ?

Есть несколько примеров того, как редактировать слайды PowerPoint с помощью библиотеки pptx здесь . Тем не менее, мне гораздо проще манипулировать активной презентацией PowerPoint с помощью win32com.client , как описано здесь . Использование примера из Microsoft Developer Network Я обнаружил, что могу легко реплицировать parts функциональность этого фрагмента VBA .

. с этим фрагментом Python:

Здесь я могу манипулировать размером и именем шрифта. Я также могу изменить ориентацию текстового поля, изменив Ориентация = 0x1 до Ориентация = 0x5 в shape1 = slide.Shapes.AddTextbox (Ориентация = 0x1, Левая = 100, Верх = 100, Ширина = 100, Высота = 100) .

Что кажется невозможным, это редактирование цвета окна или шрифта.

Это не работает:

enter image description here

Но у меня также проблемы с pip install color :

enter image description here

К настоящему времени я немного потерян во всех аккаунтах, поэтому любые намеки на ЛЮБОЙ способ манипулирования цветами были бы замечательными!

В моих попытках управлять этими досадовыми цветами я начал проверять вывод из dir (shape1.TextFrame) , dir (shape1.TextFrame.Textrange) и так далее. К моему разочарованию, я не мог найти ничего о цветах, и даже не о шрифте, хотя шрифт явно доступен для манипуляций.

Поэтому мой второй вопрос заключается в следующем: разве это не способ обследовать и манипулировать этими фигурами? И как я могу найти подходящий объект (или метод?), Чтобы манипулировать shape1 дальше? Я просмотрел PowerPoint objectmodel , но с небольшим успехом.

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

  1. Как я могу управлять цветами фигур в PowerPoint с помощью Python и win32com.client?
  2. Как я могу проверить com-объекты в Python с помощью dir() ?

Есть несколько примеров того, как редактировать слайды PowerPoint с помощью библиотеки pptx здесь. Однако мне гораздо проще управлять активной презентацией PowerPoint с помощью win32com.client , как описано здесь. Используя пример из Microsoft Developer Network Я обнаружил, что могу легко воспроизвести части функциональности этого фрагмента VBA .

. с этим фрагментом Python:

Здесь я могу управлять размером и именем шрифта. Я также могу изменить ориентацию текстового поля, изменив Orientation=0x1 в Orientation=0x5 в shape1 = slide.Shapes.AddTextbox(Orientation=0x1,Left=100,Top=100,Width=100,Height=100) .

Что кажется невозможным, так это изменение цвета поля или шрифта.

Это не работает:

enter image description here

Но у меня тоже проблемы с pip install colour :

enter image description here

К настоящему времени я немного потерялся во всех учетных записях, поэтому любые подсказки ЛЮБОМУ способу манипулирования цветами были бы замечательными!

В своих попытках управлять этими надоедливыми цветами я начал проверять вывод из dir(shape1.TextFrame) , dir(shape1.TextFrame.Textrange) и так далее. К моему разочарованию, я не смог найти ничего о цветах, и даже о шрифте, хотя шрифт явно доступен для манипуляций.

Итак, мой второй вопрос: разве это не способ вообще проверять и манипулировать этими формами? И как мне найти нужный объект (или метод?) Для дальнейшего управления shape1? Я просмотрел PowerPoint objectmodel, но без особого успеха.

Что такое COM?

С веб-сайта Microsoft о модели компонентных объектов (COM):

pywin32

Еще одна рекомендация: держите под рукой ссылку на страницу Тима Голдена. На этом ресурсе есть еще много подробностей о том, как использовать python в Windows для автоматизации и других административных задач.

Начиная

Все наши приложения начинаются с одинакового импорта и процесса активации приложения. Вот очень короткий пример открытия Excel:

Как только вы запустите скрипт из командной строки, то должны увидеть, как открывается Excel. Когда вы нажмете ENTER, приложение закроется. Прежде чем мы действительно сделаем это приложение более полезным, необходимо изучить несколько ключевых концепций.

Теперь, когда объект excel запущен, нам нужно явно сделать его видимым, установив excel.Visible = TrueКод .

win32 довольно умен и закроет Excel после завершения работы программы. Это означает, что если мы просто оставим код работать самостоятельно, вы, вероятно, не увидите Excel. Я включаю фиктивную подсказку, чтобы Excel оставался видимым на экране, пока пользователь не нажмет ENTER.

Я включаю последнюю строку excel.Application.Quit() , как немного ремня и подтяжек. Строго говоря, win32 должен закрыть Excel, когда программа будет завершена, но я решил включить excel.Application.Quit() , чтобы показать, как принудительно закрыть приложение.

Это самый простой подход к использованию COM. Мы можем расширить это несколько более полезных способов. В оставшейся части этой статьи будут рассмотрены некоторые примеры, которые могут быть полезны для ваших нужд.

Открыть файл в Excel

В своей повседневной работе я часто использую pandas для анализа и обработки данных, а затем вывожу результаты в Excel. Следующим шагом в этом процессе является открытие Excel и просмотр результатов. В этом примере мы можем автоматизировать процесс открытия файла, что может упростить его, чем попытки перейти в нужный каталог и открыть файл.

Вот полный пример:


Вот результат в Excel:

Этот простой пример расширяет предыдущий, показывая, как использовать объект Workbooks для открытия файла.

Прикрепите файл Excel к Outlook

Вот полный пример:

После создания объекта электронной почты вы можете добавить получателя и список CC, а также прикрепить файл. Когда все сказано и сделано, это выглядит так:


Последний пример является наиболее сложным, но иллюстрирует мощный подход к объединению анализа данных Python с пользовательским интерфейсом Excel.

С помощью pandas можно создать сложный Excel, но такой подход может быть очень трудоемким. Альтернативным подходом было бы создание сложного файла в Excel, затем выполните манипуляции с данными и скопируйте вкладку данных в окончательный вывод Excel.


Вот пример панели инструментов Excel, которую мы хотим создать:


Да, я знаю, что круговые диаграммы ужасны, но я могу почти гарантировать, что кто-то попросит вас поместить их на панель инструментов в какой-то момент! Кроме того, в этом шаблоне была круговая диаграмма, и я решил оставить ее в окончательном виде вместо того, чтобы пытаться вычислить другую диаграмму. Было бы полезно сделать шаг назад и посмотреть на основной процесс, которому будет следовать код:

Приступим к работе с кодом.

В этом разделе мы выполнили импорт, прочитали данные и определили все три файла. Следует отметить, что этот процесс включает в себя этап суммирования данных с помощью pandas и сохранения данных в файле Excel. Затем мы повторно открываем этот файл и копируем данные в шаблон. Это немного запутано, но это лучший подход, который я мог придумать для этого сценария.

Далее выполняем анализ и сохраняем временный файл Excel:

Теперь мы используем COM, чтобы объединить временный выходной файл с нашей вкладкой панели управления Excel и сохранить новую копию:

Код открывает Excel и удостоверяется, что его не видно. Затем он открывает шаблон панели мониторинга и файлы данных. Он использует Range("A: D").Select() для выбора всех данных, а затем копирует их в файл шаблона.

Заключение

Я предпочитаю стараться как можно больше придерживаться python для повседневного анализа данных. Однако важно знать, когда другие технологии могут упростить процесс или повысить эффективность результатов. Технология Microsoft COM является зрелой технологией, и ее можно эффективно использовать через Python для выполнения задач, которые в противном случае были бы слишком сложными. Надеюсь, эта статья дала вам несколько идей о том, как включить эту технику в свой рабочий процесс. Если у вас есть какие-либо задачи, для которых вы хотите использовать pywin32, сообщите нам об этом в комментариях.

Большинство типичных пользователей использовали Microsoft Office. В то время как офис может быть баном технической поддержки, мы все еще должны иметь дело с этим. Python может использоваться для скрипта (AKA Automate) Office и упростить для нас или наших пользователей. Это может быть не так просто, как запись макроса, но это близко. Для этой статьи вы узнаете, как использовать модуль Pywin32 для доступа к некоторым офисным программам и манипулировать их Python. Некоторые форумы говорят, что вам необходимо запустить утилиту Pythonwin Musicy на Microsoft Word (и Excel), прежде чем вы сможете получить доступ к приложениям Office. Я не думаю, что мне нужно было сделать это, чтобы сделать это работать, хотя (по крайней мере, не с версией 2007 года). Тем не менее, Pythonwin поставляется с Pywin32, поэтому, если вы бежите неприятности, вы можете попробовать его.

Python и Microsoft Excel

Давайте посмотрим на простой пример, пожалуйста?

Чтобы установить определенную ценность ячейки, позвоните что-то подобное: SH.CELLS (ROW, COL). Value Отказ Обратите внимание, что наш экземпляр не основан на нуле и фактически нанесет значение в правильной комбинации строки/COL. Если мы хотим извлечь значение, мы просто удаляем знак равенства. Что, если мы хотим формулу? Чтобы понять это наше, я записал макрос в Excel и сделал специальную команду вставки, которая только вставила формулу. Используя сгенерированный код, я выяснил, что получить формулу в Python, вы просто делаете это:

Что, если вам нужно изменить, какой лист вы находитесь? Запись макроса также показала мне, как выполнить этот подвиг. Вот код VBA от Excel:

Из этого кода я собрал, что мне нужно было позвонить в метод «Листы объекта листов» и после небольшого возобновления, я получил его на работу, выполнив следующее:

Теперь у нас есть ручка на втором листе в рабочей книге. Если вы хотите редактировать или извлекать значения, просто нажмите те же методы, которые вы использовали выше, с тем, что вы называете экземпляром листе2 (I.E. Sheet2.Cells (1,1). Value). Последние две строки из исходной программы закроют простыни, а затем выходят весь экземпляр Excel.

Вы можете думать, что до тех пор, пока все, что я показал, как создать новый документ. Что, если вы хотите открыть существующий файл? Просто сделайте что-нибудь подобное в начале кода:

Python и Microsoft Word

Доступ к Microsoft Word с Python следует за тем же синтаксисом, который мы использовали для Excel. Давайте посмотрим, как получить доступ к слову.

Этот конкретный пример также основан на чем-то из книги Чуна. Однако в Интернете есть много других примеров, которые тоже выглядят почти точно так. Давайте распаковываем этот код сейчас. Чтобы получить ручку на приложении Microsoft Word, мы называем win32.gencache.ensuredispatch («Word.Application») ; Затем мы добавляем новый документ, вызвав слово Exstance Documents.add () Отказ Если вы хотите показать пользователю, к тому, что вы задумаетесь, вы можете установить видимость слова в True.

Остальная часть кода довольно объяснительная и будет оставлена для читателя для интерпретации. Мы перейдем к открытию и сохранению документов сейчас:

Здесь мы показываем, как открыть существующий документ Word и сохранить его как текст. Я не проверил этого полностью, поэтому ваш пробег может варьироваться. Если вы хотите прочитать текст в документе, вы можете сделать следующее:

И это заканчивает урок взлома Python на словных документах. Поскольку много информации, которую я нашел на Microsoft Word, и Python, стали старой и хрустящей, и, казалось, не работал половину времени, я не добавляю в беспорядок плохой информации. Надеюсь, это заставит вас начать в своем собственном путешествии в дикие чудеса слова манипуляций.

Читайте также: