Python / Openpyxl - находит строки в столбце и возвращает номер строки - PullRequest
0 голосов
/ 23 мая 2018

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

start = 1
end = 14
sheet = wb[('Positioning')]

for col in sheet.iter_cols(min_col=2,max_col=2, min_row = start, max_row=end):
    for cell in col:
        if cell.value == 'Table 1':
            table1 = cell.row
        elif cell.value == 'Table 2':
            table2 = cell.row

Снимок экрана - Пример Excel

1 Ответ

0 голосов
/ 25 мая 2018

Это может быть сделано несколькими способами, вот один из способов: при условии, что «Таблица» не будет отображаться в таблице нигде, кроме заголовка указанной таблицы.

from openpyxl import Workbook
from openpyxl import load_workbook,styles

wb = load_workbook('Test.xlsx') #Load the workbook
ws = wb['Sheet1'] #Load the worksheet

#ws['B'] will return all cells on the B column until the last one (similar to max_row but it's only for the B column)
for cell in ws['B']:
    if(cell.value is not None): #We need to check that the cell is not empty.
        if 'Table' in cell.value: #Check if the value of the cell contains the text 'Table'
            print('Found header with name: {} at row: {} and column: {}. In cell {}'.format(cell.value,cell.row,cell.column,cell))

Что печатает:

Found header with name: Table 1 at row: 2 and column: B. In cell <Cell 'Sheet1'.B2>
Found header with name: Table 2 at row: 10 and column: B. In cell <Cell 'Sheet1'.B10>
...