Вот что я думаю, что это лучший способ, с помощью Python Excel модулей, в частности, xlrd
Предположим, у вас есть книга, которая имеет ячейку A1 с комментарием, написанной Джо Schmo, который говорит " Привет! », Вот как вы можете это понять.
>>> from xlrd import *
>>> wb = open_workbook("test.xls")
>>> sheet = wb.sheet_by_index(0)
>>> notes = sheet.cell_note_map
>>> print notes
{(0, 0): <xlrd.sheet.Note object at 0x00000000033FE9E8>}
>>> notes[0,0].text
u'Schmo, Joe:\nHi!'
Краткое объяснение того, что происходит на
Так xlrd
модуля является очень удобной вещью, как только вы понять это (полную документацию here). Первые две строки импортируют модуль и создают объект рабочей книги с именем wb
. Затем мы создаем листовой объект первого листа (индекс 0) и вызываем его sheet
(сегодня я чувствую себя творчески). Затем мы создаем dicitonary объектов примечаний, называемых notes
, с атрибутом cell_note_map
нашего листового объекта. Этот словарь имеет (row, col) индекс комментария в качестве ключа, а затем объект примечания как значение. Затем мы можем извлечь текст этой заметки, используя атрибут text
объекта примечания.
Для нескольких нот, вы можете перебирать словарю, чтобы получить на весь текст, как показано ниже:
>>> comments = []
>>> for key in notes.keys():
... comments.append(notes[key].text)
...
>>> print comments
[u"Schmo, Joe:\nHere's another\n", u'Schmo, Joe:\nhi!']
Некоторые замечания
- Это будет работать только с
.xls
файлами , но не .xlsx
, но Вы можете сэкономить .xlsx
как .xls
, так что проблем нет
- Au часть комментария всегда будет указана первыми, но к ней можно получить доступ отдельно, используя атрибут
author
вместо text
. Там также всегда будет \n
между автором и текстом.
- Клетки, у которых нет комментариев, не будут отображаться
cell_note_map
. Таким образом, полный лист без комментариев даст пустой словарь
Кажется, это самый мощный способ решить проблему, спасибо!^_ ^ –