如何对每5行重复的Excel电子表格进行规范化格式转换
数据转换实现方案
核心算法逻辑
- 读取原始Excel数据,同时保留单元格的超链接属性,避免仅读取文本丢失链接信息
- 按固定步长5将原始行数据分割为独立数据组,每个组对应目标格式的一行数据
- 遍历每个数据组,将组内第1-5行的内容分别映射到目标格式的对应列,存在超链接的单元格同步提取链接地址
- 合并所有转换完成的组数据,输出为规整后的表格文件
可运行Python实现
首先执行以下命令安装依赖库:pip install openpyxl pandas
import pandas as pd from openpyxl import load_workbook # 加载原始Excel文件 wb = load_workbook("soft.xlsx") ws = wb.active # 存储最终结果的列表 result = [] # 每组固定5行 GROUP_SIZE = 5 # 遍历所有行,按步长5分割组 for row_start in range(1, ws.max_row + 1, GROUP_SIZE): # 初始化当前组的字段 group_data = {} # 遍历组内的5行 for offset in range(GROUP_SIZE): current_row = row_start + offset if current_row > ws.max_row: break # 此处column=1代表原始数据存在第一列,可根据实际情况调整列号 cell = ws.cell(row=current_row, column=1) # 提取单元格文本值 cell_value = cell.value if cell.value else "" # 提取超链接地址(不存在则留空) cell_link = cell.hyperlink.target if cell.hyperlink else "" # 按组内偏移量映射到对应字段,可根据实际结构调整 if offset == 0: group_data["软件名称"] = cell_value group_data["官方链接"] = cell_link elif offset == 1: group_data["分类"] = cell_value elif offset == 2: group_data["版本号"] = cell_value elif offset == 3: group_data["更新时间"] = cell_value elif offset == 4: group_data["软件简介"] = cell_value # 把当前组加入结果集 result.append(group_data) # 转换为表格导出为新Excel df = pd.DataFrame(result) df.to_excel("规整后数据.xlsx", index=False)
自定义调整说明
- 若原始数据存储列不是首列,可修改代码中
ws.cell(row=current_row, column=1)的column参数为对应列编号 - 组内偏移对应的字段名称可根据你的实际目标格式自由调整
- 若需将超链接直接嵌入输出Excel的单元格中,可补充openpyxl的超链接写入逻辑
- 无代码需求可使用Excel Power Query实现:导入数据后新增索引列,对索引列取模5得到组内位置标识、整除5得到分组ID,随后按分组ID做透视聚合即可完成转换
内容的提问来源于stack exchange,提问作者korvd
相关产品推荐
相关产品推荐

