360 Secure SkillHub
360 安全技能中心

Automate Excel

面向 Excel(.xlsx/.xls) 与 CSV 表格处理,提供 17 个本地 Python 脚本,覆盖多表合并、格式互转、条件筛选、按行/按列拆分、去重、分组聚合、校验、列选择与重命名、按键合并、行列转置、模板填充、工作表重命名、条件格式与列文本格式,并给出 openpyxl、pandas 的读写代码示例。

分类:效率
thcjp
thcjp
热度 8.92
最近更新 2026-09-22 03:00:26

安装

发给 Agent
帮我安装这个技能:npx secure-skills-cli add thcjp/automate-excel
兼容性
通用兼容
联网要求
不联网
数据出网
数据不出本机
Metadata
slug
automate-excel
name
automate-excel
version
0.1.3
displayName
Automate Excel
summary
Automates reading, writing, merging, transforming, and validating Excel (.xlsx/.xls) files. Use w...
license
MIT
description
Automates reading, writing, merging, transforming, and validating Excel (.xlsx/.xls) files. Use w... 核心能力: - 效率工具领域的专业化AI辅助工具 - 基于高人气开源Skill深度优化升级 - 移除风险代码,增强安全性和稳定性 适用场景: - 工作流自动化、任务调度、批处理 - 独立开发者与一人公司效率提升 - 自动化工作流与智能决策辅助 差异化:经过深度优化,去除原始风险代码,清理外部依赖引用,增强元数据和触发关键词,完全适配SkillHub平台规范。 触发关键词: writing, reading, excel, automates, transforming, automate, merging
tags
["Automation","Integrations"]
tools
["read","exec"]

Automate Excel

在用户需要处理 Excel 文件、表格数据、批量转换或报表生成时应用本 skill。

你想做的事 调用的脚本 典型参数
多个 Excel 或多个 sheet 合成一张表 merge_sheets.py --inputs 文件或目录 --output out.xlsx
把某 sheet 导出成 CSV excel_to_csv.py --input file.xlsx --output file.csv
把 CSV 转成 Excel csv_to_excel.py --input a.csv --output a.xlsx 或 --inputs a.csv b.csv
按条件筛选行(等于/大于/包含) filter_excel.py --where "列名=值" 或 "列名>100"、"列名~北京"
按行数拆成多个文件,或按某列取值拆分 split_excel.py --by-rows 5000 或 --by-column 地区
按某列去重 deduplicate_excel.py --keys 编号 --keep first/last
按列分组并求和/计数/平均 aggregate_excel.py --group-by 地区 --agg "销售额:sum"
检查必须列、重复键、空行 validate_excel.py --require-cols 列名 --key-cols 列名
只保留/重命名部分列 select_columns.py --columns 列1,列2 --rename "旧:新"
两个表按一列对齐合并(VLOOKUP) merge_tables.py --left a.xlsx --right b.xlsx --on 键列
主表依次跟多个表做 VLOOKUP vlookup_multi.py --main 主.xlsx --lookups "表1.xlsx:键列" "表2.xlsx:键列"
行列转置 transpose_excel.py --input in.xlsx --output out.xlsx
用数据表按行填模板里的 {{列名}} template_fill.py --template t.xlsx --data d.csv --output out.xlsx
重命名工作表 rename_sheets.py --rename "Sheet1:新名" 或 --prefix "2024_"
条件格式(大于/小于/重复值/色阶) format_conditional.py --column C --rule gt --value 100 --fill red
某列当文本显示,避免科学计数法 format_columns_as_text.py --columns 身份证号,订单号

本地直接运行:进入本 skill 所在目录(或把 scripts/ 加入路径),先 pip install -r scripts/requirements.txt,再执行 python scripts/脚本名.py --help 看参数,或按上表传参运行。

技术栈

  • 读写 .xlsx:openpyxl(保留格式、公式、多工作表)
  • 数据分析/透视:pandas + openpyxl 引擎
  • 旧格式 .xls:xlrd(只读)

优先用 openpyxl 做单元格级操作和格式保留;需要筛选、聚合、合并多表时用 pandas。

依赖

pip install openpyxl pandas xlrd

或使用 skill 自带:pip install -r scripts/requirements.txt

通用流程

  1. 确认输入:文件路径、工作表名或索引、是否有表头、编码(CSV 时)。
  2. 读取:用 openpyxl 或 pandas 按需读取整表/区域。
  3. 处理:按用户需求转换、过滤、合并、计算。
  4. 写出:指定输出路径与格式(.xlsx/.csv);必要时保留原格式或新建工作簿。
  5. 校验:检查行数、关键列、重复值或业务规则。

读取 Excel

整表为 list of dict(保留表头):

import openpyxl

wb = openpyxl.load_workbook("input.xlsx", read_only=True, data_only=True)
ws = wb.active  # 或 wb["Sheet1"]
rows = list(ws.iter_rows(min_row=1, values_only=True))
header = rows[0]
data = [dict(zip(header, row)) for row in rows[1:]]
wb.close()

用 pandas(适合分析、过滤、合并):

import pandas as pd

df = pd.read_excel("input.xlsx", sheet_name=0, engine="openpyxl")

指定区域:

for row in ws["A1:D10"]:
    ...

df = pd.read_excel("input.xlsx", usecols="A:D", header=0, nrows=100)

写入 Excel

新建并写入(openpyxl):

from openpyxl import Workbook
from openpyxl.styles import Font, Alignment

wb = Workbook()
ws = wb.active
ws.title = "结果"
ws.append(["列A", "列B", "列C"])
for row in data_rows:
    ws.append(row)
ws["A1"].font = Font(bold=True)
wb.save("output.xlsx")

用 pandas 写出多表:

with pd.ExcelWriter("output.xlsx", engine="openpyxl") as writer:
    df1.to_excel(writer, sheet_name="汇总", index=False)
    df2.to_excel(writer, sheet_name="明细", index=False)

追加到已有文件(先加载再写):

wb = openpyxl.load_workbook("existing.xlsx")
ws = wb["Sheet1"]
for row in new_rows:
    ws.append(row)
wb.save("existing.xlsx")

常见任务速查

任务 做法
多文件合并 merge_sheets.py 或 pandas read_excel + pd.concat + to_excel。
CSV ↔ Excel excel_to_csv.py / csv_to_excel.py 或 pandas 读写。
按条件筛选 filter_excel.py 或 df[df["列"] == 值] / df.query()。
按行/按列拆分 split_excel.py(按行数或按某列取值分文件)。
去重 deduplicate_excel.py 或 df.drop_duplicates(subset=["列"], keep="first")。
按列聚合 aggregate_excel.py 或 df.groupby("列").agg({"数值列": "sum"})。
校验 validate_excel.py。
选择/重命名列 select_columns.py。
两表按键合并 merge_tables.py(left/inner/outer)。
行列转置 transpose_excel.py。
模板填充 template_fill.py({{列名}} 占位符)。
重命名 sheet rename_sheets.py。
多表 VLOOKUP vlookup_multi.py(主表 + 多个查找表依次左连接)。
条件格式 format_conditional.py(大于/小于/介于/重复值/色阶)。
列格式为文本 format_columns_as_text.py(避免长数字科学计数法)。
保留原格式写数据 用 openpyxl 加载原文件,只改写目标单元格,再 save。

批量处理

当用户需要处理目录下多个 Excel 时:

  1. 用 pathlib.Path("目录").glob("*.xlsx") 枚举文件。
  2. 对每个文件读取 → 处理 → 可汇总到一个 DataFrame 或分别写出。
  3. 输出可为一个合并文件,或 原名_out.xlsx 等约定;在 SKILL 中明确输出命名规则。
  4. 出错时记录文件名和异常,继续处理其余文件,最后汇总报错列表。

校验与错误处理

  • 读取前用 Path(file).exists() 检查文件存在。
  • 表为空或缺少预期列时给出明确提示(列名/行数)。
  • 写入前若目标文件已存在,按用户要求覆盖或换名;大文件考虑 write_only=True 或分块。
  • 捕获 openpyxl.utils.exceptions.InvalidFileException、KeyError(工作表名)等并返回可读错误信息。

工具脚本

skill 目录下 scripts/ 提供可执行脚本,优先在用户环境中运行脚本而非临时写长代码。

脚本 功能
merge_sheets.py 多 Excel 或同文件多 sheet 合并为一张表
excel_to_csv.py 指定 sheet 导出为 CSV
csv_to_excel.py CSV 转 Excel(单/多 CSV → 多 sheet)
filter_excel.py 按列条件筛选(=、>、<、~ 包含)输出 Excel/CSV
split_excel.py 按行数分片或按某列取值拆成多个文件
deduplicate_excel.py 按指定列去重,保留 first/last
aggregate_excel.py 按列分组聚合(sum/count/mean/min/max)
validate_excel.py 校验必须列、重复键、空行
select_columns.py 选择/重命名/排序列
merge_tables.py 两表按键列合并(VLOOKUP 式,left/inner/outer)
transpose_excel.py 行列转置
template_fill.py 用数据表按行填充模板中的 {{列名}} 占位符
rename_sheets.py 重命名工作表(原名:新名、索引:新名、前缀/后缀)
vlookup_multi.py 多表 VLOOKUP:主表依次与多个查找表左连接
format_conditional.py 按条件格式化(gt/lt/介于/重复值/色阶)
format_columns_as_text.py 将指定列设为文本格式,避免纯数字显示为科学计数法

用法见各脚本 --help 或 reference.md。

更多说明

依赖说明

运行环境

  • Agent平台: 支持SKILL.md的任意AI Agent(Claude Code / Cursor / Codex / Gemini CLI等)
  • 操作系统: Windows / macOS / Linux

第三方依赖

依赖项 类型 是否必需 获取方式
LLM API API 必需 由Agent内置LLM提供

API Key 配置

  • 本Skill基于Markdown指令,无需额外API Key(除内容中明确标注的外部API)

可用性分类

  • 分类: MD+EXEC(纯Markdown指令,部分功能需要exec命令行执行能力)
  • 说明: 基于Markdown的AI Skill,通过自然语言指令驱动Agent执行任务