Win32com, функция PageSetup.Pages.Count работает некорректноPython

Программы на Python
Anonymous
Win32com, функция PageSetup.Pages.Count работает некорректно

Сообщение Anonymous »

Мне нужно объединить все файлы .xlsx в один и выполнить сквозную нумерацию. Объединение осуществляется с помощью функции:

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

def collect_to_one():
"""Function copies to one file"""
sgmts = segmentation(start_page)
for book in range(len(sgmts)):
wb = excel.Workbooks.Add()
for file in range(len(sgmts[book])):
print(sgmts[book][file])
w = excel.Workbooks.Open(os.path.join(os.getcwd(), sgmts[book][file]))
w.Sheets(1).Copy(After=wb.Worksheets(file + 1))
wb.ActiveSheet.Name = sgmts[book][file]
w.Save()
wb.SaveAs(os.path.join(os.getcwd(), '_'.join(('Сводный', sgmts[book][-1]))))
Следующая функция выполняет сквозную нумерацию каждого листа в файле сводки:

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

def enum(start_page):
wb = excel.Workbooks.Open(os.path.join(os.getcwd(), "Сводный_09-04-01 +.xlsx"))
for i in range(2, len(files) + 2):
ws_list = wb.Worksheets(i)
ws_list.Application.PrintCommunication = False
ws_list.DisplayPageBreaks = True
print(ws_list.PageSetup.Pages.Count)
ws_list.PageSetup.FirstPageNumber = start_page
start_page += ws_list.PageSetup.Pages.Count
ws_list.Application.PrintCommunication = True
wb.SaveAs(os.path.join(os.getcwd(), "Сводный_09-04-01 +.xlsx"))
К сожалению, ws_list.PageSetup.Pages.Count работает некорректно. Например, у меня есть 6 файлов, и print(ws_list.PageSetup.Pages.Count) приводит к такому результату:
0 (на самом деле файл содержит 4 страницы)
0 ( на самом деле файл содержит 4 страницы)
0 (на самом деле файл содержит 5 страниц)
0 (на самом деле файл содержит 35 страниц)
0 (фактически файл содержит 7 страниц)
2 (фактически файл содержит 2 страницы)
Но если Я открываю файл сводки и меняю местами 2 листа, а затем возвращаю исходное расположение листов, функция перечисляет правильно. Конечно, я могу сделать то же самое, добавив две строки кода:

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

wb.Sheets(2).Move(Before=wb.Sheets(4))
wb.Sheets(2).Move(Before=wb.Sheets(4))
Но в любом случае это немного странно. Как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/626 ... ncorrectly

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