python使用openpyxl库按 行/列 合并/拆分 Excel表格
文章目录1.准备数据按行合并按行拆分按列合并按列拆分保存文件1.准备数据准备一个名为test1的excel文件,该工作簿里有sheet1,sheet2,sheet3,sheet4四个工作表。数据可以随便设定,示例数据形式如下:sheet1:sheet2:sheet3:sheet4:from openpyxl import load_workbookwb = load_workbook("test1
·
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:
更多推荐
已为社区贡献5条内容
所有评论(0)