在这里插入图片描述

1.准备数据

准备一个名为test1的excel文件,该工作簿里有sheet1,sheet2,sheet3,sheet4四个工作表。
数据可以随便设定,示例数据形式如下:


sheet1:
在这里插入图片描述


sheet2:
在这里插入图片描述


sheet3:
在这里插入图片描述


sheet4:

在这里插入图片描述


from openpyxl import load_workbook
wb = load_workbook("test1.xlsx")  # 获取整个工作簿
wslist = wb.worksheets  # 获取工作簿的所有工作表,放在一个列表中

# 依次取出test1中的sheet1,sheet2,sheet3,sheet4
ws1 = wslist[0]
ws2 = wslist[1]
ws3 = wslist[2]
ws4 = wslist[3]

按行合并

将test1中的sheet1与sheet2的数据进行列合并,结果保存在一个名为test2的文件,中的new_sheet1表格中。

data1 = ws1["A1:E11"]
data2 = ws2["A2":"E11"]
data = data1 + data2
ws_new1 = wb.create_sheet('new_sheet1')

for i in range(len(data)):
    for j in range(len(data[i])):
        ws_new1.cell(i+1, j+1, data[i][j].value)

按行拆分

将test1中的sheet1与进行按行拆分,结果保存在一个名为test2的文件,中的new_sheet2,new_sheet3表格中。
sheet1一共有11行,拆分规则为:前5行放在new_sheet2中,后6行放在new_sheet3中。

data3 = ws1['A1:E5']
data4 = ws1['A6:E11']
ws_new2 = wb.create_sheet('new_sheet2')
ws_new3 = wb.create_sheet('new_sheet3')

for i in range(len(data3)):
    for j in range(len(data3[i])):
        ws_new2.cell(i+1, j+1, data3[i][j].value)

for i in range(len(data4)):
    for j in range(len(data4[i])):
        ws_new3.cell(i+1, j+1, data4[i][j].value)

按列合并

将test1中的sheet3与sheet4的数据进行列合并,结果保存在一个名为test2的文件,中的new_sheet4表格中。

data5 = ws3["A1:C21"]
data6 = ws4["A1":"B21"]
ws_new4 = wb.create_sheet('new_sheet4')

for i in range(len(data5)):
    for j in range(len(data5[i])):
        ws_new4.cell(i+1, j+1, data5[i][j].value)

n = len(data5[0])
for i in range(len(data6)):
    for j in range(len(data6[i])):
        ws_new4.cell(i+1, j+n+1, data6[i][j].value)

按列拆分

将test1中的sheet1进行列拆分,拆分成两个表格,结果保存在一个名为test2的文件,中的new_sheet5和new_sheet6表格中。
拆分规则:将sheet的左三列放在new_sheet5中,右二列放在new_sheet6中。

data7 = ws1["A1:C11"]
data8 = ws1["D1":"E11"]
ws_new5 = wb.create_sheet('new_sheet5')
ws_new6 = wb.create_sheet('new_sheet6')

for i in range(len(data7)):
    for j in range(len(data7[i])):
        ws_new5.cell(i+1, j+1, data7[i][j].value)

for i in range(len(data8)):
    for j in range(len(data8[i])):
        ws_new6.cell(i+1, j+1, data8[i][j].value)

保存文件

wb.save("test2.xlsx")

以上功能均已实现,请自行测试,这里不在一一展示。
test2:
在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐