2015-05-22 7 views
1

Я пытаюсь записать в существующий файл xls и затем перебирать строки одного и того же файла, пока не нахожу пробел.Xlrd, xlwt и xlutils: как они работают вместе

Я понимаю, как это сделать с помощью кода.

Теперь, мой вопрос, делает ли xlrd «обновление» ссылкой на лист? Или мне нужно создать новый объект рабочей книги xlrd через функцию открытой книги каждый раз, когда я пишу, а затем сохраняю ее через функцию записи и сохранения xlwt (чтобы прочитать новую книгу)?

ответ

2

xlrd загрузит файл электронной таблицы в память в момент вызова методаopen_workbook(). Любые изменения, внесенные в файл листа после вызова open_workbook(), - , а не, автоматически отражаются в объекте в памяти.

Если вы посмотрите на исходный код xlrd на Github, в частности на open_workbook() method of the book.py file, вы увидите, что он загружает содержимое рабочего листа в память при вызове метода open_workbook(). Это означает, что если вы вызываете open_workbook(), то измените исходный файл, книга в памяти не будет отражать эти изменения.

Вот почему, когда вы используете модуль xlwt, вы должны использовать write() метод - при изменении содержимого рабочего листа, который находится в памяти, изменения не отражаются в исходном файле, пока вы не вызовете write() ,

+0

Отлично. Именно то, что я искал. Я был уверен, не знал, что исходный код был свободно доступен на github. – ohbrobig