Нет значений после чтения более 10000 строк файла .xlsx в openpyxl - PullRequest
0 голосов
/ 07 июня 2019

Я работаю над приложением, которое может считывать большой .xlsx (более 20000 строк) с помощью Openpyxl и может сделать некоторые базовые вычисления с этими данными.Я пытаюсь зачитать 20000 строк в примере ниже.Когда я запускаю этот код в командной строке Windows, вывод выводится нормально, но когда я запускаю его в терминале Linux или в терминале PyCharm, вывод после 10000 меняется на None.

Я уже пытался изменить параметр load_workbook read_only на True, но это полностью разрушило производительность приложения

from openpyxl import *

wb = load_workbook(filename="wind_data.xlsx", read_only=False)
ws = wb.active

output_data = [ws.cell(row=i, column=2).value for i in range(2, 20002)]

for i in range(0, len(output_data)):
    print(str(i+1) + " : " + str(output_data[i]))

Вывод, который я ожидаю из этого кода, закончится:

19998 : 6
19999 : 6
20000 : 6

Но вместо этого я получаю:

19998 : None
19999 : None
20000 : None

1 Ответ

0 голосов
/ 07 июня 2019

Я предлагаю использовать генераторное понимание для действительно больших коллекций.

output_data = (ws.cell(row=i, column=2).value for i in range(2, 20002))

Это может помочь в вашем случае. Я тестирую его на моем Linux, и он отлично работает на Excel с более чем 20 000 строк. Во-вторых, если вы хотите выполнить итерацию по такой коллекции и использовать индексы, используйте функцию:

перечисление (сбор)

Как:

for i, val in enumerate(output_data):
    print('{} : {}'.format(i+1, val)
...