Install
openclaw skills install @thcjp/excel-craft-freeopenclaw skills install @thcjp/excel-craft-free本 Skill 把 Excel 生成任务脚本化——通过 Python 与 openpyxl 生成结构化、可复用、可版本控制的 .xlsx 文件。免费版覆盖日常报表生成场景。
手工制表痛点明显:每月重复同样操作、修改一处要手工同步到多处、版本难以管理。本 Skill 把制表过程转化为可执行脚本,支持参数化模板、批量生成、版本控制。所有输出兼容 Excel / WPS / LibreOffice,跨平台无障碍。
| 能力模块 | 输入 | 输出 | 说明 |
|---|---|---|---|
| 多 Sheet 工作簿 | Sheet 名 + 数据 | .xlsx 文件 | 跨 Sheet 引用 |
| 单元格格式化 | 格式类型 | 应用样式 | 表头 / 数字 / 货币 / 日期 |
| 公式 | 公式表达式 | 写入单元格 | SUM / AVERAGE / VLOOKUP |
| 基础图表 | 数据范围 | 图表对象 | 柱状 / 折线 / 饼图 |
| 自动列宽 | 工作表 | 列宽调整 | 按内容长度自适应 |
| 合并单元格 | 范围 | 合并区域 | 标题 / 跨列布局 |
用input_params参数进行配置。
输入: 用户提供核心功能执行所需的指令和必要参数。 处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志。
input_params参数,支持创建/查询/导出操作用config_options参数进行配置。
输入: 用户提供参数配置与调用所需的指令和必要参数。 处理: 解析参数配置与调用的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回参数配置与调用的响应数据,包含状态码、结果和日志。
config_options参数,支持修改/重置/导入操作用output_format参数进行配置。
输入: 用户提供结果处理与输出所需的指令和必要参数。 处理: 解析结果处理与输出的输入参数,完成核心逻辑,返回结构化响应。 输出: 返回结果处理与输出的响应数据,包含状态码、结果和日志。
output_format参数,支持导出/保存/转换操作
能力覆盖范围:本skill的核心能力覆盖以下场景关键词:Excel、文件生成器、支持多、图表与基础格式、适合日常表格生成、工艺免费版面向需、要程序化生成、文件的开发者与运、营人员、提供多、图表与基础格式化、openpyxl、Python、输出兼容、WPS、LibreOffice、Use、when、需要文件处理、文档转换、格式互转、内容提取时使用、不适用于加密文件等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。按月份 × 产品生成销售表,自动计算总计与增长率,配套柱状图展示趋势。Agent 输出完整 Python 脚本,一键运行生成 .xlsx。
多 Sheet 工作簿——按品类分 Sheet,每 Sheet 含入库、出库、库存三栏,公式自动算库存。
任务列表 + 负责人 + 状态 + 完成度,条件格式高亮延期项。
按月分 Sheet,按日记录收支,自动汇总月度合计与饼图展示支出占比。
# 依赖说明
pip install openpyxl
# ...
# 示例
python3 sales_report.py
最小化示例:
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment
# ...
wb = Workbook()
ws = wb.active
ws.title = "销售数据"
# ...
# 标题
ws['A1'] = "2026 年第一季度销售报告"
ws['A1'].font = Font(bold=True, size=16)
# ...
# 表头
headers = ['月份', '产品A', '产品B', '产品C', '总计']
for col, h in enumerate(headers, 1):
cell = ws.cell(row=3, column=col, value=h)
cell.font = Font(bold=True, color='FFFFFF')
cell.fill = PatternFill(start_color='3182CE', end_color='3182CE', fill_type='solid')
# ...
# 数据
data = [
['1月', 150000, 230000, 180000],
['2月', 180000, 250000, 200000],
['3月', 220000, 280000, 230000],
]
for r, row in enumerate(data, 4):
for c, v in enumerate(row, 1):
ws.cell(row=r, column=c, value=v)
# 总计公式
ws.cell(row=r, column=5, value=f'=SUM(B{r}:D{r})')
# ...
wb.save('sales_report.xlsx')
print("已生成 sales_report.xlsx")
| 格式类型 | 字体 | 填充 | 对齐 | 数字格式 |
|---|---|---|---|---|
| 标题 | 粗体 16 号 | - | 居中 | - |
| 表头 | 粗体 12 号 白色 | 蓝色 | 居中 | - |
| 数字 | - | - | 右对齐 | #,##0.00 |
| 百分比 | - | - | 右对齐 | 0.00% |
| 货币 | - | - | 右对齐 | ¥#,##0.00 |
| 日期 | - | - | 居中 | YYYY-MM-DD |
| 边框 | - | - | - | 四向细线 |
| 类型 | 代码 | 适用场景 |
|---|---|---|
| 柱状图 | BarChart | 数据对比 |
| 折线图 | LineChart | 趋势分析 |
| 饼图 | PieChart | 占比分析 |
| 散点图 | ScatterChart | 相关性 |
# Sheet1 引用 Sheet2 的 A1
ws1['A1'] = '=Sheet2!A1'
# ...
# 跨 Sheet 求和
ws1['A2'] = '=SUM(Sheet1:Sheet3!A1)
# ...
# 跨 Sheet 条件求和
ws1['A3'] = '=SUMIF(Sheet1!A:A, "条件", Sheet1!B:B)'
auto_column_width,避免重复调整。write_only=True 模式,避免内存爆炸。A:WPS 对部分高级格式(如条件格式、自定义数字格式)支持不全。建议测试时同时在 Excel 与 WPS 中打开验证。
A:检查 Reference 的 min_col / min_row / max_col / max_row 是否与数据实际位置匹配。表头行通常需要 titles_from_data=True。
A:字体不支持中文。设置 Font(name='微软雅黑') 或 Font(name='SimSun') 显式指定中文字体。
A:openpyxl 只写入公式字符串,不计算结果。Excel 打开时会自动重算;如需预先计算,需调用 LibreOffice --headless 或使用 xlwings。
A:这是 Excel 的设计——合并范围内只有左上角单元格保留值。写入时定位到左上角即可。
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由 Agent 平台内置 LLM 提供 |
| Python3 | 运行时 | 必需 | 官网下载 |
| openpyxl | Python 库 | 必需 | pip install openpyxl |
本免费体验版限制以下高级功能:
解锁全部功能请使用专业版:excel-craft-pro
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
输入:用户提供操作指令和必要参数
输出:返回执行结果,包含操作状态和输出数据
用户: 执行核心功能
Skill: 正在执行核心功能...
Skill: 执行完成,结果如下: 操作成功
{
"success": true,
"data": {
"result": "Excel工艺免费版处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "excel craft"
}
},
"execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
"error": null
}