高效办公5——Python批量实现Excel数据结构化输出

场景概述

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

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


1595172640(1).jpg

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


1595172980(1).png
工具准备

openpyxl模块

代码实现
from openpyxl import load_workbook


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

# 创建工作表
ws_res = wb.create_sheet('Sheet3')

# 创建表头
ws_res['A1'] = '班级'
ws_res['B1'] = '姓名'

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

w_r = 1
c_max = 1

for r in range(2, max_r+1):
    for c in range(1, max_c+1):

        if ws.cell(r, c+1).value is not None:   # 判断该行数据的最后一列
            print('%s   %s' % (ws.cell(r, 1).value, ws.cell(r, c + 1).value))
            ws_res['A' + str(w_r + 1)] = ws.cell(r, 1).value
            ws_res['B' + str(w_r + 1)] = ws.cell(r, c + 1).value
            c_max = c_max + 1
        w_r = w_r + 1
    w_r = c_max

# 保存数据
wb.save(file)

执行代码后打开原data.xlsx,这里多了Sheet3工作表,且达到了我们预期的数据呈现效果!


1595179396(1).png

下节,我们将介绍如何把刚才的需求反向输出,即本节实现的呈现效果,转换为本节原呈现方式!!!

你可能感兴趣的:(高效办公5——Python批量实现Excel数据结构化输出)