Как преодолеть ограничение строки 65536 Excel при использовании win32 в Python и Excel 2010 - PullRequest
0 голосов
/ 07 ноября 2019

Я могу создать сводную таблицу Excel 2010, используя входную рабочую таблицу длиной более 65536 строк. Когда я пытаюсь сделать это в Python, используя win32com.client и «Excel.Application», это завершается ошибкой с сообщением

Exception: Type mismatch.

Это все еще загадочное сообщение, но тот факт, что 65536 - это приятное место, подсказывает мне, чтокод не может обрабатывать диапазоны листов Excel с числом строк, превышающим это число.

import win32api
import win32com.client
import pythoncom
Excel   = win32com.client.gencache.EnsureDispatch('Excel.Application')

wb = Excel.Workbooks.Open("output.xlsx")
sh_data = wb.Worksheets("DATA")
cl1 = sh_data.Cells(1,1)
cl2 = sh_data.Cells(65537,6)

PivotSourceRange = sh_data.Range(cl1,cl2)

sh_output = wb.Worksheets("OUTPUT")
outlc=sh_output.Cells(1,1)
PivotTargetRange=  sh_output.Range(outlc,outlc)
PivotTableName = 'ReportPivotTable'
try:
    PivotCache = wb.PivotCaches().Create(SourceType=win32c.xlDatabase, SourceData=PivotSourceRange, Version=win32c.xlPivotTableVersion14)
except pythoncom.com_error as error:
    print(error)
    print("Exception: " + win32api.FormatMessage(error.excepinfo[5]))

Это не полный фрагмент кода, и код завершается ошибкой в ​​строке PivotCache с:

(-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147352571), 3)
Exception: Type mismatch.

Могу ли я заставить его обработать файл output.xlsx как файл Excel 2010 для решения этой проблемы? Excel 2010 - единственная версия Excel на моем компьютере.

Спасибо.

...