import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import Border, Side

def set_border(ws, cell_range):
    """为指定范围内的单元格设置边框"""
    thin_border = Border(
        left=Side(style='thin'), 
        right=Side(style='thin'), 
        top=Side(style='thin'), 
        bottom=Side(style='thin')
    )
    for row in ws[cell_range]:
        for cell in row:
            cell.border = thin_border

def append_data_to_sheet(ws, data):
    """将数据追加到工作表的指定行,并设置边框"""
    for i, row_data in enumerate(data, start=2):  # 从第二行开始填充
        for j, value in enumerate(row_data, start=1):  # 从第一列开始填充
            cell = ws.cell(row=i, column=j, value=value)
            cell.border = Border(
                left=Side(style='thin'), 
                right=Side(style='thin'), 
                top=Side(style='thin'), 
                bottom=Side(style='thin')
            )

def create_traceback_table(template_file, output_file):
    # 加载追溯矩阵模板
    wb = load_workbook(template_file)
    
    # 读取 A.xlsx 数据,同时过滤
    df_a = pd.read_excel('A.xlsx', usecols=[3, 5])
    df_a = df_a[df_a['F'] != "信息"]  # 只保留 F 列不等于 "信息" 的行
    df_b = pd.read_excel('B.xlsx', usecols="C")
    data = list(zip(df_a['D'], df_b.iloc[:, 0]))  # 合并两个文件的数据

    # 填充到StaReq->SysReq工作表
    if 'StaReq->SysReq' in wb.sheetnames:
        ws = wb['StaReq->SysReq']
        append_data_to_sheet(ws, data)
        # 可以选择为所有填充的数据范围设置边框
        set_border(ws, f'A2:B{1+len(data)}')

    # 保存到新的文件
    wb.save(output_file)
    print(f"Updated workbook saved as '{output_file}'")

# 使用示例
create_traceback_table('追溯矩阵模板.xlsx', '追溯表.xlsx')
最后修改:2024 年 05 月 15 日
如果觉得我的文章对你有用,请随意赞赏