如何用XlsxWriter按Outcome和Severity分组并高亮排序数据?
使用XlsxWriter实现指定行置顶高亮+其余行排序
核心逻辑拆解
- 从原始数据中筛选出
Outcome=FAIL且Severity=HIGH的行,这部分放在表格最顶部并高亮 - 剩余数据按指定列(如
Severity或Outcome)降序排列 - 用XlsxWriter写入Excel时,给高亮行单独应用单元格格式
完整代码示例
假设用pandas读取原始表格数据(纯列表/字典数据逻辑类似,仅处理方式不同):
import pandas as pd import xlsxwriter # 1. 读取原始数据(替换为你的文件路径) df = pd.read_excel("原始表格.xlsx") # 2. 拆分数据:高亮行 + 其余排序行 highlight_rows = df[(df["Outcome"] == "FAIL") & (df["Severity"] == "HIGH")] # 剩余行按Severity降序排列,可按需修改排序键 remaining_rows = df[~((df["Outcome"] == "FAIL") & (df["Severity"] == "HIGH"))].sort_values(by="Severity", ascending=False) # 3. 合并处理后的数据:高亮行在前,排序行在后 processed_df = pd.concat([highlight_rows, remaining_rows], ignore_index=True) # 4. 创建Excel写入对象和格式 with pd.ExcelWriter("处理后表格.xlsx", engine="xlsxwriter") as writer: processed_df.to_excel(writer, sheet_name="Sheet1", index=False) workbook = writer.book worksheet = writer.sheets["Sheet1"] # 定义红色高亮格式 highlight_format = workbook.add_format({"bg_color": "#FFC7CE", "font_color": "#9C0006"}) # 5. 给高亮行应用格式(从第2行开始,跳过表头) highlight_count = len(highlight_rows) if highlight_count > 0: for row in range(1, highlight_count + 1): worksheet.set_row(row, None, highlight_format) # 可选:自动调整列宽 for col_num, col_name in enumerate(processed_df.columns): worksheet.set_column(col_num, col_num, len(col_name) + 2)
关键细节说明
- 排序逻辑:代码默认按
Severity降序,需调整排序列时,修改sort_values(by="你的目标列名")即可 - 高亮格式:可自定义背景色、字体色,颜色用十六进制值,支持所有标准HTML颜色
- 非Excel数据源:若原始数据是列表/字典,只需将数据转换为DataFrame,或直接遍历拆分后再写入
内容的提问来源于stack exchange,提问作者Ahsu21
相关产品推荐
相关产品推荐

