2010-04-27 69 views
2

我怎么能创建一个工作表(在一个Excel工作簿)与数据透视表使用像pyExcelerator/xlrd python库?我需要生成一份每日报告,其中包含一个数据透视表来汇总其他工作表上的数据。一种选择是将一个空白模板复制并填充到数据中。在这种情况下,有没有办法刷新代码中的主键?还有其他建议吗?pivot使用pyExcelerator/xlrd

回答

5

请澄清(通过编辑您的问题)“sheet”是“spreadsheet”的缩写,是指整个XLS文件,还是“worksheet”的一个缩写“worksheet”,它是“工作簿”的一个组件。

如果通过“数据透视表”您的意思是Excel机制,那么您运气不好,因为它只能由Excel创建。但是,如果您的意思是使用Python和适当的库创建自己的“交叉表”,则可以使用xlrd,xlwt和xlutils三重奏来执行此操作。

xlrd您似乎知道。

xlwt是pyExcelerator的一个分支,它修复了bug和一些增强功能。 pyExcelerator似乎不会被维护。

xlutils是一个实用程序模块包。 xlutils.copy可用于从xlrd Book对象中创建一个xlwt Workbook对象,以便您可以对xlwt Workbook进行更改并将其保存到文件中。

这里是你的one-stop-shop for more info on the three packages,连同一个教程,并链接到谷歌组/邮件列表,你可以用它来获得帮助。

0

我不相信您可以使用xlwt以编程方式添加数据透视表。

但您的第二种方法(填充预配置的工作簿)似乎是合理的。

您可以使用模板工作簿中的VBA宏来刷新数据透视表。要自动执行此操作,请创建一个WorkBook_Open事件处理程序。

VBA代码刷新数据透视表是:

Sheet1.PivotTables(1).PivotCache.Refresh 
+0

在excel中使用VBA代码只会给出一个错误'AttributeError:'函数'object has no attribute'刷新'' - 我可以得到Sheet1.PivotTables(1)对象 – Norfeldt 2013-11-04 13:46:33

+0

使用'Sheet1.PivotTables(1) .PivotCache()。Refresh'给出'<绑定方法CDispatch。刷新>'但似乎没有刷新 – Norfeldt 2013-11-04 13:50:28

+0

尝试''.PivotCache()。刷新()'' – codeape 2013-11-04 20:02:38