繁体   English   中英

Python for Excel:虽然列中的唯一值相同,但将剩余的行数据抓取到列的右侧并附加到不同的 WS

[英]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

WS

我使用字典来根据它们的“船 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM