Python: обновить сводные таблицы на рабочем листе

Я создаю скрипт python, который позволит мне открыть лист Excel 2010 и распечатать его.

Я получил большую часть пути

import win32com.client office = win32com.client.Dispatch("Excel.Application") wb = office.Workbooks.Open(r"path\to\excel\file\to\print.xlsm") count = wb.Sheets.Count for i in range(count): ws = wb.Worksheets[i] pivotCount = ws.PivotTables().Count for j in range(1, pivotCount+1): #TODO code to refresh each pivot table ws.PrintOut() print "Worksheet: %s - has been sent to the printer" % (ws.Name) 

Как вы можете видеть, мне все еще не хватает обновления сводных таблиц на листе.

Код VBA для обновления:

 ActiveSheet.PivotTables(1).PivotCache.Refresh 

Я не могу разбить код на синтаксис python win32com. Самое близкое, что я получил:

 wb.WorkSheets(5).PivotTables(1).PivotCache.Refresh 

который дает <bound method CDispatch.Refresh of <COMObject PivotCache>> но не приводит к <bound method CDispatch.Refresh of <COMObject PivotCache>> листу.

Любая помощь будет высоко оценен!

РЕШЕНИЕ

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

 import win32com.client office = win32com.client.Dispatch("Excel.Application") wb = office.Workbooks.Open(r"path\to\excel\file\to\print.xlsm") count = wb.Sheets.Count for i in range(count): ws = wb.Worksheets[i] ws.Unprotect() # IF protected pivotCount = ws.PivotTables().Count for j in range(1, pivotCount+1): ws.PivotTables(j).PivotCache().Refresh() # Put protection back on ws.Protect(DrawingObjects=True, Contents=True, Scenarios=True, AllowUsingPivotTables=True) ws.PrintOut() print "Worksheet: %s - has been sent to the printer" % (ws.Name) 

Не забудьте проголосовать, если хотите или использовали код.

One Solution collect form web for “Python: обновить сводные таблицы на рабочем листе”

Я нашел свою проблему. У меня была защита на листе … Глупо мне ..

  • Как распечатать несколько копий файла с помощью win32com (или альтернативы)
  • Python прочитал мой почтовый ящик почтового ящика Outlook и разобрал сообщения
  • Python - создание ярлыка с аргументами
  • Настройка свойства с помощью win32com
  • Python win32com - Автоматизация Word - Как заменить текст в текстовом поле?
  • Графики из Excel в PowerPoint с Python
  • Как сохранить вложение из Outlook с помощью win32com.client в Python?
  • Python - запустить макрос Excel
  • есть ли хороший пример использования pywin32 createprocessasuser и получения результата?
  • Как выбрать версию excel, которую win32com.client должен использовать в python?
  • win32com.client.Dispatch работает, но не win32com.client.gencache.EnsureDispatch
  •  
    Interesting Posts for Van-Lav

    панды описывают – дополнительные параметры

    Извлечение изображений из PDF без передискретизации, в python?

    Использование Django Managers против staticmethod в классе модели напрямую

    Цикл параллельной обработки с использованием многопроцессорного пула

    есть ли библиотека для разбора адресов в США?

    Python Mechanize выберите форму без имени

    python: как удалить значения из 2 списков на основе того, что находится в 1 списке

    Выбор поддокумента в Монго

    Почему shutil.copy () вызывает исключение разрешения, если cp не работает?

    Как я могу ответить на запрос метода CONNECT на прокси-сервере, используя сокет в python?

    Быстрый ping sweep в python

    python win32api.LoadKeyboardLayout (), не меняет язык в оболочке IDLE?

    Есть ли ограничение на количество таблиц, которые может иметь база данных PostgreSQL?

    Запросы Python не работают для прокси-сервера https

    Функция просмотра ошибки в флажке не возвращала ответ

    Python - лучший язык программирования в мире.