我撰寫了一個腳本,將資料從一個作業簿復制到另一個作業簿。我唯一的問題是在資料之間添加了空單元格。誰能明白為什么?看起來腳本正在跳過不符合 if 陳述句條件的值,但仍在復制空白單元格。

from openpyxl import load_workbook
from openpyxl import Workbook
wb = load_workbook('testData.xlsx')
wb2 = load_workbook('testTemplate.xlsx')
ws = wb.worksheets[0]
mr = ws.max_row
ws2 = wb2.worksheets[0]
mr2 = ws2.max_row
for row in ws.iter_rows(min_row = 1, min_col = 1, max_row = mr, max_col = 3):
for cell in row:
if cell.value == "A":
ws2.cell(row = mr2 1, column = 1).value = (cell.offset(column = 1).value)
mr2 = 1
elif cell.value == "B":
ws2.cell(row = mr2 1, column = 2).value = (cell.offset(column = 1).value)
mr2 = 1
elif cell.value == "C":
ws2.cell(row = mr2 1, column = 3).value = (cell.offset(column = 1).value)
mr2 = 1
wb2.save('testTemplate.xlsx')
uj5u.com熱心網友回復:
你的問題:
每次輸入值后都輸入 Enter(mr2 = 1),因為它在 if 條件下回傳
解決方案:
為不同的列創建單獨的計數器,并在該列中輸入值時 Enter(Counter = 1)
例如:
A = ws2.max_row
if cell.value == "A":
ws2.cell(row = A 1, column = 1).value = (cell.offset(column = 1).value)
A = 1
完整代碼:
from openpyxl import load_workbook
from openpyxl import Workbook
wb = load_workbook('testData.xlsx')
wb2 = load_workbook('testTemplate.xlsx')
ws = wb.worksheets[0]
mr = ws.max_row
ws2 = wb2.worksheets[0]
A = ws2.max_row
B = ws2.max_row
C = ws2.max_row
for row in ws.iter_rows(min_row = 2, min_col = 1, max_row = mr, max_col = 2):
for cell in row:
if cell.value == "A":
ws2.cell(row = A 1, column = 1).value = (cell.offset(column = 1).value)
A = 1
elif cell.value == "B":
ws2.cell(row = B 1, column = 2).value = (cell.offset(column = 1).value)
B =1
elif cell.value == "C":
ws2.cell(row = C 1, column = 3).value = (cell.offset(column = 1).value)
C =1
wb2.save('testTemplate.xlsx')
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/527202.html
上一篇:GoogleSheetsApps腳本:如果選中了相鄰的復選框,則將該單元格復制并粘貼到另一列的下一個空單元格
下一篇:在腳本中實作多執行緒/并行處理
