我需要在迭代中复制行值,然后将值复制到新创建的工作表中-一切正常,没有问题,但是我需要添加其他代码-请参见注释的代码
import os, openpyxl
os.chdir('d:\\python')
xlFile = 'Data01.xlsx'
wb = openpyxl.load_workbook(xlFile)
sheet = wb['Sheet1']
salesperson = []
saleslist = []
for i in range(sheet.max_row):
i += 1
cellVal = sheet.cell(i, 65).value
#rowVal = row value
if not cellVal.startswith(' '):
if cellVal not in salesperson:
salesperson.append(cellVal)
#saleslist.append(rowVal)
for cellVal in salesperson:
wb.create_sheet(cellVal)
saleSheet = wb[cellVal]
#copy saleslist items to the newly created sheet
wb.save('file2.xlsx')
Turn Unique Values into sheetnames Save their respective row vales to the new sheets
答案 0 :(得分:0)
啊,所以可以做到这一点的一种方法是:
B
列中的单元格值to max_row + 1
现在我们可以将其翻译为代码:
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
wb = load_workbook('example.xlsx')
ws = wb.active
temp_ws = None
for row_number, row_cells in enumerate(wb.iter_rows(min_row=2), 1):
# Iterate over rows skiping the header one
name = ws[f'B{row_number}'].value # Find the item in the row
if name not in wb.sheetnames:
# Check if item doesn't have a sheet and create one
temp_ws = wb.create_sheet(name)
else:
# If item has a sheet add a new row to that sheet
temp_ws = wb[name]
if temp_ws.max_row != 1:
# If max row is one (empty sheet) write to it
new_row = temp_ws.max_row+1
else:
# select a new empty row
new_row = temp_ws.max_row
for culomn, cell in enumerate(row_cells, 1):
# Add data to new row
ws_temp.cell(row=new_row, column=culomn, value=cell.value)
wb.save('example')
请注意,如果之前已经修改过工作表,这将不起作用,因为max_row
可能不是第一行,而是None
的第一行。如果需要,您可以对此进行调整。