![](/img/trans.png)
[英]Python for Excel: While value in column A is the same, take remaining row data and copy paste to new worksheet
[英]Python for Excel: While unique value in column is the same then grab the remaining row data to the right of the column and append to different WS
我在某种程度上是 python 的初学者,并且在使用 openpyxl 时遇到了以下问题。 例如,我有下面的示例工作表:工作表
| Boat ID | Emp ID | Emp Name | Start Date | Manager |
------------------------------------------------------
| 1 16044 Derrick ASAP Anthony |
| 1 16045 John ASAP Anthony |
| 1 16046 Bill ASAP Anthony |
| 1 16047 Joe ASAP Anthony |
| 2 16048 Justin ASAP Jacob |
| 2 16049 Sandy ASAP Jacob |
| 2 16050 Omar ASAP Jacob |
| 3 16051 Michael ASAP Nathan |
| 3 16052 Bill ASAP Nathan |
我正在尝试做的是遍历 Boat ID 列,而单元格的值是等效的,我想将相应的行数据移到右侧并打开一个新的工作表/工作簿并在 Col B:E 中复制粘贴行.
所以理论上,对于每个 Boat ID = 1,我们将从 Cols B:E 中取出 ID 1 唯一的每一行,打开一个新工作簿并相应地粘贴它们。 接下来,对于每个 Boat ID = 2,我们将在 cols B:E 中获取 ID = 2 的行,打开一个新工作簿并相应地粘贴。 类似地,我们将对每个 Boat ID = 3 重复该过程。
PS 为简单起见,我已按船 ID 升序排列了桌子,但如果有人想要奖励积分,他们可以就未订购桌子时的处理方式提出意见。
在这里的任何帮助将不胜感激,因为我仍在学习,像这样的复杂问题将有助于进一步提高我的技能。
我知道我很遥远,但这是我到目前为止的逻辑。
F
我使用字典来根据它们的“船 ID”对从原始文件中读取的所有船进行分类,键是船 ID,值是船
如您所见,即使原始 XML 文件未按船 ID 排序,代码也可以工作
wb = openpyxl.load_workbook("boats.xlsx", read_only=True)
ws = wb.active
boat_dict = {}
for row_index in range(1,ws.max_row+1):
row = [cell.value for cell in ws[row_index]]
boat_id = row[0]
if boat_id in boat_dict:
boat_dict[boat_id].append(row[1:])
else:
boat_dict[boat_id] = [row[1:]]
new_wb=openpyxl.Workbook()
for boat_id , boats in boat_dict.items():
ws = new_wb.create_sheet(title="Boat id %s"%boat_id)
for boat in boats:
ws.append(boat)
new_wb.save("boats_ans.xlsx")
希望我能帮忙:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.