Я работаю над автоматизацией файла Excel с помощью библиотеки Python win32com.client. Моя цель — создать файл Excel, который будет выглядеть и функционировать так, как будто кто-то вручную проделал всю работу в Excel. При попытке использовать метод AutoShow для отображения первых 10 записей на основе сводного поля я постоянно сталкиваюсь со следующей ошибкой:
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
Я работаю над автоматизацией файла Excel с помощью библиотеки Python win32com.client. Моя цель — создать файл Excel, который будет выглядеть и функционировать так, как будто кто-то вручную проделал всю работу в Excel. При попытке использовать метод AutoShow для отображения первых 10 записей на основе сводного поля я постоянно сталкиваюсь со следующей ошибкой: [code](-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2146827284), None)[/code] Подробности: [list] [*]Метод AutoSort работает должным образом, но метод AutoShow завершается с ошибкой из-за этой ошибки. . [*]Поле, для которого я пытаюсь использовать автопоказ, существует в сводной таблице и доступно. Вот упрощенная версия кода, которая выдаст ту же ошибку: [/list] [code]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')
# 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")
except Exception as e: logger.error("An error occurred: %s", e) raise [/code] Будем признательны за любую помощь или предложения по решению этой проблемы! Что я пробовал: [list] [*]Проверено, что PivotField("People") существует в сводной таблице. [*]Метод AutoSort работает нормально, но AutoShow постоянно выдает ошибку. > [*]Обратился к официальной документации AutoShow и уверен, что мои параметры соответствуют синтаксису VBA. [*]Пытался использовать разные поля, но получил ту же ошибку. [*]Использовался Type=1 и другие варианты параметров, та же ошибка. [*]Проверено, что есть тысячи строк, поэтому фильтрация 10 не превышает этого значения< /li> [/list] Я ожидаю, что когда это сработает, сводная таблица будет фильтроваться/сокращаться, чтобы отображать только 10 результатов, а не все результаты.Вопросы: [list] Правильные ли параметры я передаю в AutoShow? [*]Что-то не так? Мне не хватает информации о порядке или типе данных параметров? Может ли эта ошибка быть связана с проблемой, связанной с конкретным полем данных («Годовой доход»), суммируемым в сводной таблице? [/list] Я просмотрел их, но они не ответили на мой вопрос: Эксперимент с методом автошоу, Excel VBA, значение Top 10, ошибка 1004 Excel Vba, создать сводную таблицу, автопоказать по значению "топ-10", ошибка 1004