python实现excel表格按内容模块倒序排列

1. 表格内容

2. 情景需求

        粗略描述:表格中每隔多行就会有一行头,比如表中A7、A20,在每行头下面跟着归属于这一标题的内容 ,比如F_name和J_name。

        要实现:每个归属于同一标题的F_name和J_name倒序排列,格式为F_name:J_name。即蓝色部分是一组,黄色部分是一组。

        这个表格下面还有很多行。

3. python代码实现

        下面代码仅是实现功能,并未做异常处理。
from openpyxl import load_workbook


file_name = "test.xlsx"
wb_read = load_workbook(filename=file_name)
ws_read = wb_read['reg_define'] #读取表格sheet名]
all_max_row = ws_read.max_row  # 获取表格最大行号
A_name_Rows = []  # 定义一个列表,存放所有A列有值的行号
A_name_Conts = []  # 定义一个列表,存放所有A列有值的内容


# 从第7行开始取第一列所有非空的值,并添加到A_name_Rows和A_name_Conts列表中
for row in ws_read.iter_rows(min_row=7, max_row=all_max_row, min_col=1, max_col=1):
    for cell in row:
        content_row = cell.value
        if type(content_row) == str:
            A_name_Conts.append(content_row)
            A_name_Rows.append(cell.row)


for i in range(len(A_name_Rows)):  # 定义变量i,用来循环A_name_Rows列表
    contents_row = []      # 定义一个列表,存放获取的所有内容
    A_name_cont = A_name_Conts[i]  # 第i行的A_name内容
    min_row = A_name_Rows[i]  # 在A列有值得列表中,取出下标i对应的行号,赋给变量min_row
    i = i + 1
    if i >= len(A_name_Rows):  # 整张表的最大行超过列表长度时,将表最大行号赋给变量max_row
        max_row = all_max_row
    else:
        max_row = A_name_Rows[i] - 1  # 在A列有值得列表中,取出下标i+1对应行号的上一行,赋给变量min_row
    min_col = 6 # 定义获取范围的最小列
    max_col = 10 # 定义获取范围的最大列
    # 取第min_row行第min_col列开始,到max_row行max_col列的范围
    for row in ws_read.iter_rows(min_row=min_row, max_row=max_row, min_col=min_col, max_col=max_col):
        F_name_Cont = row[0].value  # 取出F列的值
        J_name_cont = row[4].value  # 取出J列的值
        content_row = F_name_Cont + ' : ' + str(J_name_cont)
        contents_row.append(content_row)

    contents_row = contents_row[::-1]  # 列表倒序
    print(A_name_cont, "是", contents_row)
执行结果:
A7 ['1a : a', '2b : b', '3c : c', '4d : d', '5e : e', '6f : f', '7g : g', '8h : h', '9i : i', '10j : j', '11k : k', '12l : l', '13m : m']
A20 ['1a : a', '2b : b', '3c : c', '4d : d', '5e : e', '6f : f', '7g : g', '8h : h', '9i : i', '10j : j', '11k : k']
Process finished with exit code 0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

見贤思齊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值