Как заставить метод PivotFields AutoShow работать в Python с использованием win32?Python

Программы на Python
Ответить
Anonymous
 Как заставить метод PivotFields AutoShow работать в Python с использованием win32?

Сообщение Anonymous »

Я работаю над автоматизацией файла Excel с помощью библиотеки Python win32com.client. Моя цель — создать файл Excel, который будет выглядеть и функционировать так, как будто кто-то вручную проделал всю работу в Excel. При попытке использовать метод AutoShow для отображения первых 10 записей на основе сводного поля я постоянно сталкиваюсь со следующей ошибкой:

Код: Выделить всё

(-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2146827284), None)
Подробности:
  • Метод AutoSort работает должным образом, но метод AutoShow завершается с ошибкой из-за этой ошибки. .
  • Поле, для которого я пытаюсь использовать автопоказ, существует в сводной таблице и доступно.
    Вот упрощенная версия кода, которая выдаст ту же ошибку:

Код: Выделить всё

import win32com.client
import logging

# Set up basic configuration for logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('output.log'),
logging.StreamHandler()
]
)

# Create a logger
logger = logging.getLogger('MyApp')

try:
# Open Excel application
excel = win32com.client.Dispatch("Excel.Application")
excel.Visible = True

# Open the workbook
workbook = excel.Workbooks.Open(r"C:/Users/.../temp.xlsx")  # File path to Excel Spreadsheet
worksheet = workbook.Sheets('Top 10 Incomes')  # Adjust the sheet name as needed

# Access the pivot table
pivot_table = worksheet.PivotTables('PivotTable1')  # Adjust the pivot table name as needed

# Apply the AutoShow method
pivot_table.PivotFields("People").AutoShow(Type=-4105, Range=1, Count=10, Field="AnnualIncome")

logger.info("AutoShow method applied successfully.")

except Exception as e:
logger.error("An error occurred: %s", e)
raise
Будем признательны за любую помощь или предложения по решению этой проблемы!
Что я пробовал:
  • Проверено, что PivotField("People") существует в сводной таблице.
  • Метод AutoSort работает нормально, но AutoShow постоянно выдает ошибку. >
  • Обратился к официальной документации AutoShow и уверен, что мои параметры соответствуют синтаксису VBA.
  • Пытался использовать разные поля, но получил ту же ошибку.
  • Использовался Type=1 и другие варианты параметров, та же ошибка.
  • Проверено, что есть тысячи строк, поэтому фильтрация 10 не превышает этого значения< /li>
Я ожидаю, что когда это сработает, сводная таблица будет фильтроваться/сокращаться, чтобы отображать только 10 результатов, а не все результаты.Вопросы:
  • Правильные ли параметры я передаю в AutoShow?
  • Что-то не так? Мне не хватает информации о порядке или типе данных параметров?
    Может ли эта ошибка быть связана с проблемой, связанной с конкретным полем данных («Годовой доход»), суммируемым в сводной таблице?
Я просмотрел их, но они не ответили на мой вопрос:
Эксперимент с методом автошоу, Excel VBA, значение Top 10, ошибка 1004
Excel Vba, создать сводную таблицу, автопоказать по значению "топ-10", ошибка 1004

Подробнее здесь: https://stackoverflow.com/questions/790 ... sing-win32
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»