美文网首页数据分析officePython
高效办公6——Python批量转换Excel相同数据按行输出

高效办公6——Python批量转换Excel相同数据按行输出

作者: 模仿打酱油 | 来源:发表于2020-07-20 02:59 被阅读0次
场景概述

这个标题可能过于笼统,只因个人不知如何具体陈述。想要表达的内容如下:

原数据data.xlsx中Sheet3工作表数据:


1595172980(1).png

需将原数据转换成下图效果,并保存到data.xlsx文件的Sheet2工作表中:


1595172640(1).jpg
需求准备

先在data.xlsx文件中创建工作表Sheet2,否则会报错!!!

工具准备

openpyxl模块

代码实现
from openpyxl import load_workbook


# 需要处理的文件
file = r'C:/Users/Administrator/Desktop/test/data.xlsx'
wb = load_workbook(file)
# 激活工作表'Sheet1'
ws = wb['Sheet3']

# 获取数据范围,即数据最大的行数和列数
max_r = ws.max_row
max_c = ws.max_column

# 创建工作表
ws_res = wb['Sheet2']

r_num = 2
c_num = 1

for r in range(2, max_r + 1):
    # for c in range(1, max_c + 1):
    if ws.cell(r, 1).value == ws.cell(r + 1, 1).value:
        ws_res.cell(row=c_num + 1, column=1, value=ws.cell(r, 1).value)
        ws_res.cell(row=c_num + 1, column=r_num, value=ws.cell(r, 2).value)
        r_num = r_num + 1
    else:
        ws_res.cell(row=c_num + 1, column=r_num, value=ws.cell(r, 2).value)
        c_num = c_num + 1
        r_num = 2
        continue

# 保存数据
wb.save(file)

'''根据处理后的数据范围创建表头'''
# 激活工作表'Sheet2'
ws2 = wb['Sheet2']

# 获取数据范围,即数据最大的行数和列数
max_c = ws2.max_column

for i in range(1, max_c):
    ws2.cell(row=1, column=1, value='班级')
    ws2.cell(row=1, column=i+1, value='学生 %s' % i)

# 保存数据
wb.save(file)


执行代码,完成预期效果!


1595185018(1).png

下节,将介绍同一维度输出至一个单元格,只是用符号分隔开!!!

相关文章

网友评论

    本文标题:高效办公6——Python批量转换Excel相同数据按行输出

    本文链接:https://www.haomeiwen.com/subject/kxrjkktx.html