<p>我为感兴趣的人找到了答案。结果我想访问的列被引用了,同时也引用了Pivot表中的Pivot字段。因此,一旦我能够读取pivotfield的内容,我就可以将其放入一个数组中(然后使用该数组打印出pdf发票)。有一些编码的奇怪之处,但用setdefaultcoding函数解决了这个问题。代码如下:</p>
<pre><code>import win32com.client as win32
import sys
reload(sys)
sys.setdefaultencoding("UTF-8")
working_dir = 'C:\\invoice\\'
save_dir = 'C:\\test\\'
xl = win32.gencache.EnsureDispatch("Excel.Application")
xl.Visible = True
template_wb = xl.Workbooks.Open(working_dir + 'Settlement report V6- TEMPLATE.xlsm')
#Worksheets
settlements_ws = template_wb.Sheets('Settlement')
orgdata_ws = template_wb.Sheets('Organization Data')
masterdata_ws = template_wb.Sheets('Master Data')
settlements_ws.Activate()
agencies = []
def maxrow(sheet):
used = sheet.UsedRange
nrows = used.Row + used.Rows.Count - 1
return nrows
mypivot = settlements_ws.PivotTables("PivotTable2").PivotFields("AgencyName")
for j in mypivot.PivotItems():
j = str(j)
if j == "#N/A":
continue
else:
j = j.replace("\xc2\xa0","")
agencies.append(j)
print agencies
#Looping through agencies and saving PDFs
for i in agencies:
settlements_ws.Cells(8,3).Value = i
print settlements_ws.Cells(8,3).Value
settlements_ws.ExportAsFixedFormat(0, save_dir + i + '.pdf')
print "Finished!"
</code></pre>