使用openpyxl

时间:2018-11-21 21:36:42

标签: python openpyxl

我正在尝试从工作表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 :(得分:0)

您的第二个循环是嵌套的,因此它将始终使用与第一个工作表相同的值覆盖第二个工作表的列中的所有值。

我会做这样的事情:

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