Отнимает слишком много времени с большим файлом Excel с Python - PullRequest
0 голосов
/ 28 мая 2019

У меня есть файл Excel с 4,95 МБ. Я пытаюсь прочитать этот файл с openpyxl и выполнить формулу Excel в этом файле. Отлично работает с небольшими файлами. Но как только я начал работать с большим файлом. Это занимает слишком много времени, как будто кажется, что оно движется к бесконечному состоянию. Пожалуйста, дайте мне знать, с каким подходом или какие изменения я должен сделать в этом фрагменте кода.

import openpyxl
import os
import xlrd
import xlsxwriter
#reading the file i.e. 4.5 Mb
wb = openpyxl.load_workbook(r"type_example.xlsx")
Sheet = wb.get_sheet_by_name('sheet1')


for row,cellObj in enumerate(Sheet["C"],1):
    cellObj.value='=IF(OR(B{0}="J", B{0} ="U", B{0} ="s"),"s", IF(OR(B{0} ="I", B{0} ="M", B{0} ="N", B{0}="O", B{0} ="Q", B{0} ="U", B{0} ="V"), "J", "des"))'.format(row)
    Sheet.cell(row=1, column=3).value = 'Dt'
    #path to save file 
    wb.save(r'\Documents\test_1.xlsx')

1 Ответ

0 голосов
/ 28 мая 2019

Я быстро осмотрелся и обнаружил, что проблема может быть в том, что вы идете по клетке.

Похоже, что openpyxl в основном будет выполнять линейный поиск по всему документу, чтобы найти нужную ячейку, если вы делаете подобные вещи (что не идеально), и вам нужно использовать генератор, если вы хотите ускорить его.

Это не выглядит слишком сложно, но я не особо разбираюсь в питоне. Поэтому вместо того, чтобы пытаться объяснить саму концепцию, я оставлю вам следующее:

https://blog.davep.org/2018/06/02/a_little_speed_issue_with_openpyxl.html

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...