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

python实现excel表格按内容模块倒序排列,第1张

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/943257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-18
下一篇 2022-05-18

发表评论

登录后才能评论

评论列表(0条)

保存