Итерация строк для разных столбцов с помощью Python и Openpyxl - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь перебрать строки в таблице Excel, используя openpyxl.Я пытаюсь проверить, пуста ли ячейка в столбце A для текущей строки, и если это так, мне нужно напечатать данные, которые находятся в столбце B в той же строке.Вот мой код:

wb = openpyxl.load_workbook('worksheet.xlsx')
wb.active = 1 #Change the active sheet.
sheets = wb.sheetnames #The sheets.
currentSheet = wb[sheets[n]] #Chooses the current sheet from the workbook.

for row in currentSheet.iter_rows('A{}:A{}'.format(currentSheet.min_row, currentSheet.max_row)):
    for cell in row:
        if not cell.value:
            print(currentSheet['B''row'].value)

Когда я запускаю это, я получаю следующий вывод:

  File "main.py", line 69, in get_callout
    print(currentSheet['B''row'].value)
  File "C:\Users\~\AppData\Local\Continuum\anaconda3\lib\site-packages\ope
pyxl\worksheet\worksheet.py", line 357, in __getitem__
    min_col, min_row, max_col, max_row = range_boundaries(key)
  File "C:\Users\~\AppData\Local\Continuum\anaconda3\lib\site-packages\ope
pyxl\utils\cell.py", line 135, in range_boundaries
    raise ValueError("{0} is not a valid coordinate or range")
ValueError: {0} is not a valid coordinate or range

Любая помощь будет принята с благодарностью!

РЕДАКТИРОВАТЬ Я забыл упомянуть, что я также использую openpyxl 2.4.9, потому что 2.5.3 (текущая версия) не позволит мне открыть книгу Excel, которая мне нужна.

Ответы [ 2 ]

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

Я на самом деле нашел другой способ сделать это!

Вот мой код для любого, кто может наткнуться на это в будущем:

    for r in range(1, currentSheet.max_row):
        cell = currentSheet.cell(row=r, column=12)
        if cell.value is None:
            data = currentSheet.cell(row=r, column=2)
            print(data.value)

В основном то, что я делал, былопроверка того, был ли столбец L (12) пустым, и нужно ли было печатать значение в той же строке, но в столбце B (2).Очевидно, что печать может быть изменена на что-либо еще (возврат или что-то еще).

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

Это пример того, когда вам следует использовать нотацию Excel.

for (a, b) in currentSheet.iter_rows(max_col=2):
   if a.value is None:
       print(b.value)

Должно работать

...