Как решить "KeyError: 0" в следующем коде, где я пытался сделать сводную таблицу в листе Excel с использованием Python? - PullRequest
0 голосов
/ 03 июля 2019

Я относительно новичок в python и пытаюсь создать сводную таблицу, используя Python 3. Однако я получаю KeyError: 0. Данные, которые я использую, находятся под фреймом данных df1 со столбцами ОПИСАНИЕ ПРОДУКТА, ИМЯ ИМПОРТЕРА, ЦЕНА ЕДИНИЦЫ (INR) и ИМЯ ПОСТАВЩИКА. Я использую следующий код для создания сводки:

import win32com.client
Excel   = win32com.client.gencache.EnsureDispatch('Excel.Application') # Excel = win32com.client.Dispatch('Excel.Application')

win32c = win32com.client.constants

wb = Excel.Workbooks.Add()
Sheet1 = wb.Worksheets("Sheet1")


for i, TestDataRow in enumerate(df1):
    for j, TestDataItem in enumerate(TestDataRow):
        Sheet1.Cells(i+2,j+4).Value = TestDataItem

cl1 = Sheet1.Cells(2,4)
cl2 = Sheet1.Cells(2+len(df1)-1,4+len(df1[0])-1)
PivotSourceRange = Sheet1.Range(cl1,cl2)

PivotSourceRange.Select()

Sheet2 = wb.Worksheets(2)
cl3=Sheet2.Cells(4,1)
PivotTargetRange=  Sheet2.Range(cl3,cl3)
PivotTableName = 'ReportPivotTable'

PivotCache = wb.PivotCaches().Create(SourceType=win32c.xlDatabase, SourceData=PivotSourceRange, Version=win32c.xlPivotTableVersion14)

PivotTable = PivotCache.CreatePivotTable(TableDestination=PivotTargetRange, TableName=PivotTableName, DefaultVersion=win32c.xlPivotTableVersion14)

PivotTable.PivotFields('PRODUCT DESCRIPTION').Orientation = win32c.xlRowField
PivotTable.PivotFields('PRODUCT DESCRIPTION').Position = 1
PivotTable.PivotFields('IMPORTER NAME').Orientation = win32c.xlRowField
PivotTable.PivotFields('IMPORTER NAME').Position = 1
PivotTable.PivotFields('UNIT PRICE (INR)').Orientation = win32c.xlPageField
PivotTable.PivotFields('UNIT PRICE (INR)').Position = 1
PivotTable.PivotFields('SUPPLIER NAME').Orientation = win32c.xlPageField
PivotTable.PivotFields('SUPPLIER NAME').Position = 1

DataField = PivotTable.AddDataField(PivotTable.PivotFields('Amount'))
DataField.NumberFormat = '#\'##0.00'

Excel.Visible = 1

wb.SaveAs('ranges_and_offsets.xlsx')
Excel.Application.Quit()

Пожалуйста, помогите.

...