2010-04-27 34 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