Доступ к строковому значению заголовка ячейки Excel - PullRequest
0 голосов
/ 19 октября 2018

У меня есть таблица в файле Excel (.xlsx), который я создал с помощью Python 2.7: table

В первом столбце вы можете увидеть отдельных лиц (геометрии)которые проверяются (соответственно ' 3001 ', ' 3002 ' и ' 3003 ').Все геометрии имеют закон RelativeThickness , закон MaxThickness и положение максимальной толщины , которые развиваются вдоль геометрии.Существуют критерии (здесь не показаны), которые говорят « OK » или « N.OK » (не ОК), если критерии определенного закона не соблюдаются.

Например: законы, развивающиеся вдоль геометрий, на самом деле являются кривыми.Если я поставлю критерий " Только 1 максимум на кривой " по закону " MaxThickness ", и я применю этот критерий к своим 3 лицам, он должен поставить '1030 *OK 'для 3001 и 3002 и' N.OK 'для 3003 (+ красный или зеленый), поскольку 3001 и 3002 имеют только 1 максимум по кривой, но 3003 имеет 2 максимума.Глобальное влияние всех критериев на все законы обобщено в столбце « TOTAL ».

Я хотел бы просмотреть каждый из моих рядов и проверить, есть ли " N.OK ".Если есть " N.OK ", я бы хотел, чтобы код Python возвращал мне соответствующий заголовок ( например: Python не вернул бы мне ничего за 3001 и 3002 , но для 3003 мне будет возвращено " MaxThickness ", " MaxThicknessPosition " и " TOTAL ").

Было бы так (но я не знаю, как получить доступ к заголовку и вернуть его строковое значение):

for row in sheet1.iter_rows(min_row=1, max_col=6, max_row=4):
    for cell in row:
        if cell.value == 'N.OK':
            header = cell.header

"sheet1" - мой активный лист в файле Excel(wb = Workbook () и sheet1 = wb.active).

Важно: Мне нужно остаться на Python 2.7, и я не могу использовать панд (я не могу использовать окно cmd, чтобы использовать conda, anaconda, miniconda, pip, ..., потому чтоУ меня нет доступа администратора), и я уже пытался загрузить и установить его вручную, но у меня проблема с файлами C, которые сжаты в нем.Я нашел , что , но я не уверен, что понимаю, как это работает.

Если это возможно, я также хотел бы "игнорировать" столбец "ВСЕГО".Мне нужно будет распечатать или сохранить, почему человек отклонен (на основании того, какой закон не соблюдается), чтобы иметь возможность сказать « 3003 отклонен из-за MaxThickness и MaxThicknessPosition », но я не хочураспечатать или сохранить «ВСЕГО не уважают».

Большое спасибо, если вы можете помочь мне с этим!

1 Ответ

0 голосов
/ 19 октября 2018

Вам просто нужно создать что-то для поиска заголовков.

headers = dict((c.column, c.value for c in ws[1]))

for row in ws.iter_rows((min_row=1, max_col=6, max_row=4):
    for cell in row:
        if cell value == "N.OK":
             header = headers[column]

Для чего я думаю, что это довольно идиотично, если кто-то приезжает в Python и вынужден работать с Python 2.7.Библиотеки, включая openpyxl, скоро не будут работать с Python 2.

...