Openpyxl load_workbook и запазването отнемат твърде много време

Следващите редове отнемат 45 секунди първият и повече от минута и половина вторият. Something.xls е с размер 4 MB и промените са незначителни. Има ли нещо грешно?

something = openpyxl.load_workbook('Something.xlsx')
something.save('Something.xlsx')

Някои подробности: Използвам Python 2.7.3 на Windwos 7, работната книга има 2 листа, първият от които има 67610 реда, нямам достъп до никаква мрежа, за да върша тази работа.


person José    schedule 24.07.2013    source източник
comment
Въпросът ви не е толкова ясен, колкото може да бъде. Искате да кажете, че вторият ред код е много по-бавен от първия ред код?   -  person Who8MyLunch    schedule 24.07.2013
comment
Намирам, че и двата реда отнемат твърде много време. Не знам дали е нормално или има нещо нередно.   -  person José    schedule 24.07.2013
comment
ще трябва да дадете много повече подробности, за да можем да ви помогнем. Знам, че когато зареждам и записвам много по-големи файлове от 4KB в openpyxl, става доста бързо   -  person Brad    schedule 24.07.2013
comment
Така че изглежда има нещо нередно. Какви подробности трябва да добавя?   -  person José    schedule 24.07.2013
comment
процедурата за репликация би била идеална - включително връзка към Excel листа, който зареждате (също така, сигурни ли сте, че е 4KB? ако имате ›67k реда, съмнявам се, че вашият файл е толкова малък. Ако е 4MB, тогава времето, от което се оплаквате, може има повече смисъл)   -  person Brad    schedule 24.07.2013
comment
За да разширя това, което @Brad казва за размера: Когато създам напълно празен .xlsx файл (Excel 2010 на Windows 7), той вече е 8,54 KB. Ако вляза и изтрия 2-ри и 3-ти лист, той все още се свежда само до 7,16 KB. Така че мисля, че 4 MB е много вероятно, докато 4 KB е почти невъзможно.   -  person John Y    schedule 25.07.2013
comment
Наистина е голям 4 MG.   -  person José    schedule 19.08.2013


Отговори (1)


Така че създадох лист в Excel с 67 000 реда само с 4 колони и произволни десетични данни - и листът беше почти 5 MB, така че > 1000x това, което казахте във вашия въпрос. Като се има предвид, че това е прилично количество данни, бих предложил да използвате оптимизирания четец, а не нормалния. Ето връзка към урока:

https://openpyxl.readthedocs.org/en/latest/optimized.html

Дано това помогне!

person Brad    schedule 24.07.2013
comment
Преобразуването на XML в Python и обратно в XML отнема време, поради което предлагаме оптимизации под формата на read_only и write_only режими и продължаваме да подобряваме производителността, когато е възможно. - person Charlie Clark; 04.12.2014
comment
@Brad какво трябва да направим, когато трябва да заредим файла с този размер с помощта на load_workbook и да добавим нов ред към работния лист и да запазим работната книга? - person Syed Abdul Qadeer; 05.12.2016