尝试使用Python 2.7刷新数据透视表时出现属性错误

时间:2014-05-09 08:46:40

标签: excel python-2.7 refresh win32com xlrd

我试图在网上找到答案,但只是感到困惑。 我是一个Windows用户,拥有Python 2.7并使用保存在sharepoint上的Excel 2010文件,尝试自动化数据提取。基本上,我的单​​人纸牌程序逐个打开文件,提取数据并将它们保存到新的xl文件中。 到目前为止,我已经使用了xlwt和xlrd,一切都很顺利。但是现在我遇到了一个文件xlsm,其中包含每次都需要刷新的数据透视表。我搜索了它并找到了代码:Python: Refresh PivotTables in worksheet 问题是它对我来说根本不起作用......我不断得到像

这样的属性错误
  

AttributeError:.Open

我注意到语法也大不相同(wb.Sheets.Count与wb.nsheets)。使用win32com我甚至无法遍历工作簿的表单...我只是不知道什么是问题 - Python版本,导入问题或者其他什么...... 我在xlrd / xlwt中找不到的东西:ws.PivotTables(j).PivotCache()。Refresh() - 如果我没弄错,问题是用xlrd / xlwt我实际上并没有打开Excel文件,所以可能用它们刷新数据是不可能的...唉,转向win32com.client还没有帮助...... 有什么建议或链接吗? :)我可能会在有问题的xl文件的VBA代码中添加自动更新(刷新),但我不想更改文件,而是我的代码:)

编辑:我粘贴下面的代码,以及我一直收到的错误: 从别人的代码复制的以下内容不起作用,返回 AttributeError:Property' Excel.Application.Visible'无法设置。

   import win32com.client
import os

xl = win32com.client.DispatchEx("Excel.Application")
wb = xl.workbooks.open("//some_dir.xlsm")
xl.Visible = True
wb.RefreshAll()
xl.Quit()

当我尝试将它合并到一个同时使用xlrd和xlwt的程序时,它不起作用......

from copy import deepcopy

from xlrd import open_workbook

from xlutils.copy import copy as copy

from xlwt import *
from datetime import *
#some definitions here...
rb = open_workbook('my_template.xlsx')

wb = copy(rb)
sheet_1 = wb.get_sheet(0) 
sheet_2 = wb.get_sheet(1)
#now the code that evaluates the dates:
import datetime


ys = raw_input('year in yyyy format:\n')
ms = raw_input('month in mm format:\n')

ds = raw_input('day in dd format:\n')

#here the definitions concerning dates are called, all in xlwt and xlrd
#now other files are being opened and data extracted and written into sheet_1 and sheet_2
#now it's time for refreshments ;) - I wanted to 1. open and update the file with win32com, #close it and 2. with xlrd get the data from the updated file:

#refreshing all (preparing file)
import win32com.client
import os

xl = win32com.client.DispatchEx("Excel.Application")
wb = xl.workbooks.open("some_dir.xlsm") #it is a shared file saved in intranet
xl.Visible = True
wb.RefreshAll()
xl.Quit()


print 'file refreshed'


file = open_workbook("some_dir.xlsm")

row_sheet1 = 176
row_sheet2 = 248


for sheet in file.sheets():
print sheet.name


#... the rest of the code ensues

错误再次出现: AttributeError:Property' Excel.Application.Visible'无法设置。

我想我不应该同时使用xlrd和win32com.client而我的整个想法只是如此woooong? ;)但为什么它不起作用"单独",我的意思是第一个,短代码?

0 个答案:

没有答案