当电子表格文件是主要输入或输出时使用此技能。这意味着用户想要:打开、读取、编辑或修复现有的 .xlsx、.xlsm、.csv 或 .tsv 文件(例如添加列、计算公式、格式化、制图、清理混乱数据);从头创建新的电子表格或从其他数据源创建;或在表格文件格式之间进行转换。当用户通过名称或路径引用电子表格文件时特别触发——即使是随意提及(如"我下载目录里的 xlsx")——并且想对其进行操作或从中生成内容。也适用于将混乱的表格数据文件(格式错误的行、错位的表头、垃圾数据)清理或重构为规范的电子表格。交付物必须是电子表格文件。当主要交付物是 Word 文档、HTML 报告、独立 Python 脚本、数据库管道或 Google Sheets API 集成时不触发,即使涉及表格数据也不触发。
91%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
重要说明: 所有
scripts/路径均相对于此技能目录。 运行方式:cd {this_skill_dir} && python scripts/...或使用execute_shell_command的cwd参数。
除非用户或现有模板另有规定
用户可能要求您创建、编辑或分析 .xlsx 文件的内容。您有不同的工具和工作流可用于不同的任务。
soffice):通过 scripts/recalc.py 进行公式重新计算git 是可选的,但可以改善验证工作流中的红线差异输出。PATH 中可用;如果缺失,报告依赖问题并停止(不要反复重试)。公式重新计算需要 LibreOffice:使用 scripts/recalc.py 重新计算公式值。该脚本在首次运行时自动配置 LibreOffice,并处理 Unix 套接字受限的沙箱环境(通过 scripts/office/soffice.py)。
对于数据分析、可视化和基本操作,使用 pandas 提供的强大数据操作功能:
import pandas as pd
# 读取 Excel
df = pd.read_excel('file.xlsx') # Default: first sheet
all_sheets = pd.read_excel('file.xlsx', sheet_name=None) # All sheets as dict
# 分析数据
df.head() # Preview data
df.info() # Column info
df.describe() # Statistics
# 写入 Excel
df.to_excel('output.xlsx', index=False)始终使用 Excel 公式,而不是在 Python 中计算值后硬编码。 这确保电子表格保持动态且可更新。
# 错误做法:在 Python 中计算并硬编码结果
total = df['Sales'].sum()
sheet['B10'] = total # Hardcodes 5000
# 错误做法:在 Python 中计算增长率
growth = (df.iloc[-1]['Revenue'] - df.iloc[0]['Revenue']) / df.iloc[0]['Revenue']
sheet['C5'] = growth # Hardcodes 0.15
# 错误做法:在 Python 中计算平均值
avg = sum(values) / len(values)
sheet['D20'] = avg # Hardcodes 42.5# 正确做法:让 Excel 自行计算总和
sheet['B10'] = '=SUM(B2:B9)'
# 正确做法:将增长率写成 Excel 公式
sheet['C5'] = '=(C4-C2)/C2'
# 正确做法:使用 Excel 函数计算平均值
sheet['D20'] = '=AVERAGE(D2:D19)'这适用于所有计算——总计、百分比、比率、差值等。电子表格应能在源数据更改时重新计算。
python scripts/recalc.py output.xlsxstatus 为 errors_found,检查 error_summary 获取具体错误类型和位置#REF!:无效的单元格引用#DIV/0!:除以零#VALUE!:公式中的数据类型错误#NAME?:无法识别的公式名称# 使用 openpyxl 处理公式和格式
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment
wb = Workbook()
sheet = wb.active
# 添加数据
sheet['A1'] = 'Hello'
sheet['B1'] = 'World'
sheet.append(['Row', 'of', 'data'])
# 添加公式
sheet['B2'] = '=SUM(A1:A10)'
# 设置格式
sheet['A1'].font = Font(bold=True, color='FF0000')
sheet['A1'].fill = PatternFill('solid', start_color='FFFF00')
sheet['A1'].alignment = Alignment(horizontal='center')
# 列宽
sheet.column_dimensions['A'].width = 20
wb.save('output.xlsx')# 使用 openpyxl 保留公式和格式
from openpyxl import load_workbook
# 加载现有文件
wb = load_workbook('existing.xlsx')
sheet = wb.active # or wb['SheetName'] for specific sheet
# 处理多个工作表
for sheet_name in wb.sheetnames:
sheet = wb[sheet_name]
print(f"Sheet: {sheet_name}")
# 修改单元格
sheet['A1'] = 'New Value'
sheet.insert_rows(2) # Insert row at position 2
sheet.delete_cols(3) # Delete column 3
# 新增工作表
new_sheet = wb.create_sheet('NewSheet')
new_sheet['A1'] = 'Data'
wb.save('modified.xlsx')通过 openpyxl 创建或修改的 Excel 文件包含公式字符串但不包含计算值。使用提供的 scripts/recalc.py 脚本重新计算公式:
python scripts/recalc.py <excel_file> [timeout_seconds]示例:
python scripts/recalc.py output.xlsx 30该脚本:
确保公式正常工作的快速检查:
pd.notna() 检查空值/ 之前检查分母(#DIV/0!)脚本返回包含错误详情的 JSON:
{
"status": "success", // or "errors_found"
"total_errors": 0, // Total error count
"total_formulas": 42, // Number of formulas in file
"error_summary": { // Only present if errors found
"#REF!": {
"count": 2,
"locations": ["Sheet1!B5", "Sheet1!C10"]
}
}
}data_only=True 读取计算值:load_workbook('file.xlsx', data_only=True)data_only=True 打开并保存,公式将被替换为值并永久丢失read_only=True,写入时使用 write_only=Truepd.read_excel('file.xlsx', dtype={'id': str})pd.read_excel('file.xlsx', usecols=['A', 'C', 'E'])pd.read_excel('file.xlsx', parse_dates=['date_column'])重要:生成用于 Excel 操作的 Python 代码时:
对于 Excel 文件本身:
agentscope-ai/QwenPaw
2cf28d1
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.