2017-01-27 10 views
0

Я пытаюсь проанализировать файл, а затем сохранить обработанные данные в excel с помощью openpyxl. Когда файл, подлежащий анализу, является небольшим, я могу успешно сэкономить. Но когда файл, подлежащий анализу, большой, я получаю следующую ошибку:Сохранение excel с использованием openpyxl

Traceback (последний последний звонок): Файл «C: \ Users \ 522094 \ Desktop \ vdbench \ vdbench_new - Copy.py», строка 195, в a.generate_report() Файл «C: \ Users \ 522094 \ Desktop \ vdbench \ vdbench_new - Copy.py», строка 185, в файле generate_report self.wb.save (filename = report_path) Файл «C: \ Python27 \ lib \ site-packages \ openpyxl \ workbook \ workbook.py ", строка 339, в сохранении save_workbook (self, filename) Файл" C: \ Python27 \ lib \ site-packages \ openpyxl \ writer \ excel.py ", строка 268, в save_workbook writer.save (имя файла) Файл" C: \ Python27 \ lib \ site-packa ges \ openpyxl \ writer \ excel.py ", строка 250, в сохранении self.write_data() Файл" C: \ Python27 \ lib \ site-packages \ openpyxl \ writer \ excel.py ", строка 81, в файле write_data self._write_worksheets() Файл "C: \ python27 \ Lib \ сайт-пакеты \ openpyxl \ автор \ excel.py", строка 199, в _write_worksheets XML = ws._write() Файл «C: \ python27 \ lib \ site-packages \ openpyxl \ workheet \ worksheet.py ", строка 866, в _write return write_worksheet (self) Файл" C: \ Python27 \ lib \ site-packages \ openpyxl \ writer \ worksheet.py ", строка 177, in write_worksheet xf.write (tables.to_tree()) Файл «C: \ Python27 \ lib \ contextlib.py», строка 24, in exit self.gen.next() Файл «C: \ Python27 \ lib \ site-packages \ et_xmlfile \ xmlfile.py», строка 50, в элементе self._write_element (el) Файл «C: \ Python27 \ lib \ site-packages \ et_xmlfile \ xmlfile.py ", строка 77, в _write_element xml = tostring (element) Файл« C: \ Python27 \ lib \ xml \ etree \ ElementTree.py », строка 1126, tostring ElementTree (элемент) .write (файл, кодирование, метод = метод) Файл «C: \ Python27 \ lib \ xml \ etree \ ElementTree.py», строка 820, в записи serialize (write, self._root, encoding, qnames , namespaces) Файл «C: \ Python27 \ lib \ xml \ etree \ ElementTree.py», строка 939, в _serialize_xml _serialize_xml (write, e, encoding, qnames, None) Fi le "C: \ Python27 \ lib \ xml \ etree \ ElementTree.py", строка 939, в _serialize_xml _serialize_xml (write, e, encoding, qnames, None) Файл «C: \ Python27 \ lib \ xml \ etree \ ElementTree.py ", строка 939, в _serialize_xml _serialize_xml (write, e, encoding, qnames, None) Файл« C: \ Python27 \ lib \ xml \ etree \ ElementTree.py », строка 940, в _serialize_xml write ("") MemoryError

Пожалуйста, предложите, как решить.

ответ

0

Вы не указали, какую книгу вы используете, но согласитесь с официальной документацией. Более быстрая альтернатива - это использование режима записи только для записи книги, тогда вы можете настроить свою книгу в режиме только для записи флаг в конкретизации:

>>> from openpyxl import Workbook 
>>> wb = Workbook(write_only=True) 
>>> ws = wb.create_sheet() 
>>> 
>>> # now we'll fill it with 100 rows x 200 columns 
>>> 
>>> for irow in range(100): 
...  ws.append(['%d' % i for i in range(200)]) 
>>> # save the file 
>>> wb.save('new_big_file.xlsx') 

официальной документации, если Вам необходима дополнительная информация:

https://openpyxl.readthedocs.io/en/default/optimized.html#write-only-mode

Смежные вопросы