Как я могу создать рабочий лист (в рабочей книге Excel) со сводной таблицей, используя библиотеки Python, такие как pyExcelerator/xlrd? Мне нужно создать ежедневный отчет со сводной таблицей для суммирования данных на других листах. Одним из вариантов может быть пустой шаблон, который я копирую и заполняю данными. В этом случае есть ли способ обновить сводку из кода? Любые другие предложения?
поворачивает с помощью pyExcelerator/xlrd
Ответы (3)
Пожалуйста, уточните (путем редактирования вашего вопроса), является ли «лист» аббревиатурой «электронной таблицы» и означает целый файл XLS, или это аббревиатура «рабочего листа», компонента «книги».
Если под «сводной таблицей» вы подразумеваете механизм Excel, вам не повезло, потому что это может быть создано только Excel. Однако, если вы имеете в виду «кросс-таблицу», которую вы создаете сами, используя Python и соответствующую библиотеку, вы можете сделать это, используя трио xlrd, xlwt и xlutils.
xlrd, о котором вы, кажется, знаете.
xlwt — это форк pyExcelerator с исправленными ошибками и несколькими улучшениями. pyExcelerator, похоже, не поддерживается.
xlutils — это пакет служебных модулей. xlutils.copy можно использовать для создания объекта xlwt Workbook из объекта xlrd Book, чтобы можно было вносить изменения в xlwt Workbook и сохранять его в файл.
Вот ваш универсальный магазин для получения дополнительной информации о трех пакетах вместе с учебным пособием и ссылками. в группу/список рассылки google, которые вы можете использовать для получения помощи.
Попробуйте взглянуть на это: Python: обновить сводные таблицы на листе
Если вы разберетесь, как создавать сводные таблицы, вы можете использовать мой код для их обновления.
Я не верю, что вы можете программно добавить сводную таблицу, используя xlwt
.
Но ваш второй подход (заполнение предварительно настроенной книги) кажется разумным.
Вы можете обновить сводную таблицу с помощью макроса VBA в рабочей книге шаблона. Чтобы сделать это автоматически, создайте обработчик событий WorkBook_Open
.
Код VBA для обновления сводной таблицы:
Sheet1.PivotTables(1).PivotCache.Refresh
AttributeError: 'function' object has no attribute 'Refresh'
- я могу получить объект Sheet1.PivotTables(1)
- person Norfeldt; 04.11.2013
Sheet1.PivotTables(1).PivotCache().Refresh
дает <bound method CDispatch.Refresh of <COMObject PivotCache>>
но ничего не обновляется
- person Norfeldt; 04.11.2013
.PivotCache().Refresh()
- person codeape; 05.11.2013
The VBA code..<same as now>
, а затем The equalent python win32com code is Sheet1.PivotTables(1).PivotCache().Refresh()
- person Norfeldt; 05.11.2013