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 日
© 允许规范转载