скопировать значение в определенный столбец на другом листе, используя openpyxl - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь получить значение столбца с рабочего листа1 на рабочие листы2 (в конкретном столбце), пропуская все значение nul / None между ними.Мой код работал, когда я распечатал все значения в столбце worksheet1, исключая все значения nul.Однако, когда я сохранил его в worksheet2, он показал только последнее значение и продублировал его для всего столбца (от строки 2 до 20).Не знаю, почему в новом столбце было записано только последнее значение

from openpyxl import Workbook
from openpyxl import load_workbook
source_file = (r'XXX(Source file).xlsx')
dest_file = (r'XXX(dest file).xlsx')

wb1=load_workbook(source_file, data_only=True)
wb1.active=0
ws1=wb1.active

wb2=load_workbook(dest_file)
wb2.active=0
ws2=wb2.active

for a in range(9,43):
  cell2 = ws1.cell(row = a, column = 10)
  if cell2.value is None or cell2.value == 0:
     continue
  else:
     print(cell2.value)
     for b in range(2,20):
        ws2.cell(row = b, column=4).value = cell2.value
wb2.save(dest_file)

1 Ответ

0 голосов
/ 22 ноября 2018

Ваш второй цикл является вложенным, так что он всегда будет перезаписывать все значения в столбце второго листа тем же значением из первого.

Я бы сделал что-то вроде этого:

idx = 2
for row in ws1.iter_rows(min_row=9, max_row=43, min_col=10, max_col=10):
    cell = row[0]
    if not cell.value:
        ws2.cell(row=idx, column=4, value=cell.value)
        idx += 1
...