поворачивает с помощью pyExcelerator/xlrd

Как я могу создать рабочий лист (в рабочей книге Excel) со сводной таблицей, используя библиотеки Python, такие как pyExcelerator/xlrd? Мне нужно создать ежедневный отчет со сводной таблицей для суммирования данных на других листах. Одним из вариантов может быть пустой шаблон, который я копирую и заполняю данными. В этом случае есть ли способ обновить сводку из кода? Любые другие предложения?


person Raj N    schedule 27.04.2010    source источник


Ответы (3)


Пожалуйста, уточните (путем редактирования вашего вопроса), является ли «лист» аббревиатурой «электронной таблицы» и означает целый файл XLS, или это аббревиатура «рабочего листа», компонента «книги».

Если под «сводной таблицей» вы подразумеваете механизм Excel, вам не повезло, потому что это может быть создано только Excel. Однако, если вы имеете в виду «кросс-таблицу», которую вы создаете сами, используя Python и соответствующую библиотеку, вы можете сделать это, используя трио xlrd, xlwt и xlutils.

xlrd, о котором вы, кажется, знаете.

xlwt — это форк pyExcelerator с исправленными ошибками и несколькими улучшениями. pyExcelerator, похоже, не поддерживается.

xlutils — это пакет служебных модулей. xlutils.copy можно использовать для создания объекта xlwt Workbook из объекта xlrd Book, чтобы можно было вносить изменения в xlwt Workbook и сохранять его в файл.

Вот ваш универсальный магазин для получения дополнительной информации о трех пакетах вместе с учебным пособием и ссылками. в группу/список рассылки google, которые вы можете использовать для получения помощи.

person John Machin    schedule 27.04.2010

Попробуйте взглянуть на это: Python: обновить сводные таблицы на листе

Если вы разберетесь, как создавать сводные таблицы, вы можете использовать мой код для их обновления.

person Norfeldt    schedule 05.11.2013

Я не верю, что вы можете программно добавить сводную таблицу, используя xlwt.

Но ваш второй подход (заполнение предварительно настроенной книги) кажется разумным.

Вы можете обновить сводную таблицу с помощью макроса VBA в рабочей книге шаблона. Чтобы сделать это автоматически, создайте обработчик событий WorkBook_Open.

Код VBA для обновления сводной таблицы:

Sheet1.PivotTables(1).PivotCache.Refresh
person codeape    schedule 27.04.2010
comment
использование кода VBA в excel дает только ошибку AttributeError: 'function' object has no attribute 'Refresh' - я могу получить объект Sheet1.PivotTables(1) - person Norfeldt; 04.11.2013
comment
Использование Sheet1.PivotTables(1).PivotCache().Refresh дает <bound method CDispatch.Refresh of <COMObject PivotCache>>но ничего не обновляется - person Norfeldt; 04.11.2013
comment
Попробуйте .PivotCache().Refresh() - person codeape; 05.11.2013
comment
Привет, @codeape. Я действительно попробовал это (и это сработало) через некоторое время после написания комментария, но забыл обновить свой комментарий. Спасибо за ваш ответ, хотя - person Norfeldt; 05.11.2013
comment
Я вижу, вы обновили наш ответ - просто хочу отметить, что теперь это код python win32, на который вы его изменили, а не код VBA, который не использует последние два () - person Norfeldt; 05.11.2013
comment
Это нормально. Вы можете просто сказать The VBA code..<same as now>, а затем The equalent python win32com code is Sheet1.PivotTables(1).PivotCache().Refresh() - person Norfeldt; 05.11.2013