我的腳本將資料從一個 Excel 作業簿中的每個作業表復制到另一個作業簿中的第一個作業表。該腳本還將根據 A 列中的值對資料進行排序。
我的問題是我當前的輸出是在資料之間添加空單元格。我不確定為什么會這樣。有誰知道為什么?謝謝你。

from openpyxl import load_workbook
from openpyxl import Workbook
wb = load_workbook('testData.xlsx')
wb2 = load_workbook('testTemplate.xlsx')
get_sheet = wb.sheetnames
for sheet in get_sheet:
ws = wb[sheet]
mr = ws.max_row
mc = ws.max_column
ws2 = wb2['Sheet1']
mr2 = ws2.max_row
mc2 = ws2.max_column
for i in range(2, mr 2):
for j in range(1, mc 1):
if ws.cell(row=i,column=j).value == "A":
ws2.cell(row=mr2 1,column=j).value = ws.cell(row=i,column=j 1).value
elif ws.cell(row=i,column=j).value == "B":
ws2.cell(row=mr2 1,column=j 1).value = ws.cell(row=i,column=j 1).value
elif ws.cell(row=i,column=j).value == "C":
ws2.cell(row=mr2 1,column=j 2).value = ws.cell(row=i,column=j 1).value
mr2 = 1
wb2.save('testTemplate.xlsx')
uj5u.com熱心網友回復:
除錯后,您的代碼最終得到了您mr2 = 1在 Value = C 時應用的點,并且您在 C 的值出現后輸入。
解決您的問題的代碼:
from openpyxl import load_workbook
from openpyxl import Workbook
wb = load_workbook('testData.xlsx')
wb2 = load_workbook('testTemplate.xlsx')
get_sheet = wb.sheetnames
for sheet in get_sheet:
ws = wb[sheet]
mr = ws.max_row
mc = ws.max_column
ws2 = wb2['Sheet1']
mr2 = ws2.max_row
mc2 = ws2.max_column
for i in range(2, mr 2):
for j in range(1, mc 1):
if ws.cell(row=i,column=j).value == "A":
ws2.cell(row=mr2 1,column=j).value = ws.cell(row=i,column=j 1).value
# check wheater B or C column has black space if not do mr2 = 1
if ws2.cell(row=mr2 1,column=j 1).value !=None:
if ws2.cell(row=mr2 1,column=j 2).value!=None:
mr2 = 1
elif ws.cell(row=i,column=j).value == "B":
ws2.cell(row=mr2 1,column=j 1).value = ws.cell(row=i,column=j 1).value
# check wheater A or C column has black space if not do mr2 = 1
if ws2.cell(row=mr2 1,column=j).value !=None:
if ws2.cell(row=mr2 1,column=j 2).value!=None:
mr2 = 1
elif ws.cell(row=i,column=j).value == "C":
ws2.cell(row=mr2 1,column=j 2).value = ws.cell(row=i,column=j 1).value
# check wheater A or B column has black space if not do mr2 = 1
if ws2.cell(row=mr2 1,column=j).value !=None:
if ws2.cell(row=mr2 1,column=j 1).value!=None:
mr2 = 1
wb2.save('testTemplate.xlsx')
讓我知道這是否對您有幫助??
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524475.html
