一樣openpyxl, 但直接加入分頁與表頭
import openpyxl as pyxl wb = pyxl.load_workbook(r'C:\input.xlsx') ws = wb.active #print(sheet_ranges['B2'].value) dieNo = [] for col in ws.columns[1]: dieNo.append(col.value) offset = [] for col in ws.columns[2]: offset.append(col.value) Rin = [] for col in ws.columns[3]: Rin.append(col.value) Rout = [] for col in ws.columns[4]: Rout.append(col.value) x_pos = [] for col in ws.columns[7]: x_pos.append(col.value) y_pos = [] for col in ws.columns[8]: y_pos.append(col.value) myList = list(zip(dieNo, offset, Rin, Rout, x_pos, y_pos)) #print (myVal[3]) wb0 = pyxl.Workbook() ws1 = wb0.worksheets[0] ws1.title = 'offset table' ws2 = wb0.create_sheet() ws2.title = 'Rin Rout table' ws3 = wb0.create_sheet() ws3.title = 'offset map' ws4 = wb0.create_sheet() ws4.title = 'Rin map' ws5 = wb0.create_sheet() ws5.title = 'Rout map' # Mapping for Unit in myList: ws3.cell(row=Unit[5]+2, column=Unit[4]+1).value = Unit[1] # offset map ws4.cell(row=Unit[5]+2, column=Unit[4]+1).value = Unit[2] # Rin map ws5.cell(row=Unit[5]+2, column=Unit[4]+1).value = Unit[3] # Rout map # Table ws1.cell(row=1, column=1).value = 'Design1' ws1.cell(row=1, column=2).value = 'Design2' ws1.cell(row=1, column=3).value = 'Design3' ws1.cell(row=1, column=4).value = 'Design4' ws1.cell(row=1, column=5).value = 'Design5' ws1.cell(row=1, column=6).value = 'Design6' ws2.cell(row=1, column=1).value = 'Design1_Rin' ws2.cell(row=1, column=2).value = 'Design1_Rout' ws2.cell(row=1, column=3).value = 'Design2_Rin' ws2.cell(row=1, column=4).value = 'Design2_Rout' ws2.cell(row=1, column=5).value = 'Design3_Rin' ws2.cell(row=1, column=6).value = 'Design3_Rout' ws2.cell(row=1, column=7).value = 'Design4_Rin' ws2.cell(row=1, column=8).value = 'Design4_Rout' ws2.cell(row=1, column=9).value = 'Design5_Rin' ws2.cell(row=1, column=10).value = 'Design5_Rout' ws2.cell(row=1, column=11).value = 'Design6_Rin' ws2.cell(row=1, column=12).value = 'Design6_Rout' RowCount = 2 for Unit in myList: if Unit[0] % 6 == 0: col = 6 ws1.cell(row = RowCount, column = col).value = Unit[1] ws2.cell(row = RowCount, column = 2*(col-1)+1).value = Unit[2] ws2.cell(row = RowCount, column = 2*(col-1)+2).value = Unit[3] RowCount += 1 else: col = Unit[0] % 6 ws1.cell(row = RowCount, column = col).value = Unit[1] ws2.cell(row = RowCount, column = 2*(col-1)+1).value = Unit[2] ws2.cell(row = RowCount, column = 2*(col-1)+2).value = Unit[3] #ws2.cell(row=1, column=1).value = 333 #ws2['A2']=414 availavle too wb0.save(r'C:\output.xlsx')