xlsx 技能
用途
当电子表格文件是主要输入或输出时使用本技能,覆盖创建、编辑、分析 .xlsx 文件的场景:打开、读取、编辑或修复现有工作簿,以及从零生成新的 Excel 文件。
主要能力
- 读取与分析:使用 pandas 读取单个工作表或全部工作表(sheet_name=None),进行预览、列信息查看与统计描述。
- 创建与编辑:使用 openpyxl 创建工作簿、写入数据与公式、设置字体/填充/对齐/列宽,以及插入行、删除列、新建工作表等。
- 公式重算:使用 scripts/recalc.py 调用 LibreOffice 重新计算公式值,扫描所有单元格中的 Excel 错误(#REF!、#DIV/0!、#VALUE!、#N/A、#NAME?),并返回含错误位置与数量的 JSON。
- 公式校验:提供引用抽样验证、列映射核对、行偏移注意、除零检查、跨表引用格式等清单。
使用方式
Python 示例(数据读写):
import pandas as pd
df = pd.read_excel('file.xlsx') all_sheets = pd.read_excel('file.xlsx', sheet_name=None)
创建文件示例:
from openpyxl import Workbook from openpyxl.styles import Font, PatternFill, Alignment
wb = Workbook() sheet = wb.active sheet['A1'] = 'Hello' 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')
编辑现有文件示例:
from openpyxl import load_workbook
wb = load_workbook('existing.xlsx') sheet = wb.active sheet['A1'] = 'New Value' sheet.insert_rows(2) sheet.delete_cols(3) new_sheet = wb.create_sheet('NewSheet') new_sheet['A1'] = 'Data' wb.save('modified.xlsx')
重算公式命令:
python scripts/recalc.py output.xlsx python scripts/recalc.py output.xlsx 30
配方关键原则:始终使用 Excel 公式而非在 Python 中计算后硬编码。例如使用 =SUM(B2:B9)、=(C4-C2)/C2、=AVERAGE(D2:D19),而不是写入计算出的数值,以保持表格可随源数据变化重算。
输出规范
- 所有 Excel 文件:使用一致的专业字体(如 Arial、Times New Roman),除非用户另有指示;交付时公式零错误。
- 更新模板时:研究并严格匹配现有格式、样式与约定,不得强加标准化格式;现有模板约定始终优先于本指南。
财务模型颜色编码(除非用户或现有模板另有说明)
- 蓝色文字 (RGB: 0,0,255):硬编码输入、用户将更改的场景数字。
- 黑色文字 (RGB: 0,0,0):所有公式与计算。
- 绿色文字 (RGB: 0,128,0):同一工作簿内其他工作表的链接。
- 红色文字 (RGB: 255,0,0):指向其他文件的外部链接。
- 黄色背景 (RGB: 255,255,0):需要注意的关键假设或需要更新的单元格。
数字格式标准
- 年份:格式化为文本字符串,如 "2024" 而非 "2,024"。
- 货币:使用 $#,##0 格式;表头须注明单位,如 "Revenue ($mm)"。
- 零值:通过数字格式使所有零显示为 "-",包括百分比,如 "$#,##0;($#,##0);-"。
- 百分比:默认 0.0%(一位小数)。
- 倍数:估值倍数(EV/EBITDA、P/E)格式为 0.0x。
- 负数:使用括号 (123) 而非负号 -123。
公式构建规则
- 将所有假设(增长率、利润率、倍数等)放在独立的假设单元格中,公式内使用单元格引用而非硬编码值,例如 =B5*(1+$B$6) 而非 =B5*1.05。
- 预防错误:核对单元格引用、检查范围差一错误、确保各预测期公式一致、用边界情况(零值、负数)测试、确认无意外循环引用。
硬编码来源注释
在单元格中或旁侧(若位于表格末尾)注释,格式为 "Source: [System/Document], [Date], [Specific Reference], [URL if applicable]"。示例:
- "Source: Company 10-K, FY2024, Page 45, Revenue Note, [SEC EDGAR URL]"
- "Source: Company 10-Q, Q2 2025, Exhibit 99.1, [SEC EDGAR URL]"
- "Source: Bloomberg Terminal, 8/15/2025, AAPL US Equity"
- "Source: FactSet, 8/20/2025, Consensus Estimates Screen"
适用场景
需要生成或维护带公式、需要保持动态可重算的电子表格;需要按财务模型惯例进行颜色编码与数字格式化的模型;需要从现有模板出发、严格保留其格式的更新任务;以及需要读取和分析 Excel 数据的工作。
限制与注意事项
- 公式重算依赖 LibreOffice;脚本在首次运行时自动配置,包括 Unix socket 受限的沙盒环境(由 scripts/office/soffice.py 处理)。
- openpyxl 保存的文件仅保存公式字符串而不含计算值,须用 scripts/recalc.py 更新值。
- 使用 data_only=True 打开并保存会以值替代公式,公式将永久丢失。
- 大文件建议 read_only=True 读取或 write_only=True 写入。
- recalc.py 返回 JSON:status 为 success 或 errors_found,并含 total_errors、total_formulas,以及出错时的 error_summary(按错误类型列出 count 与 locations)。
- 公式验证清单包括:抽样验证 2-3 个引用、确认列映射(如第 64 列是 BL 而非 BK)、注意 Excel 行从 1 开始计数、用 pd.notna() 检查空值、留意 FY 数据常在 50 列之后、搜索全部匹配项、检查除法分母、核对跨表引用格式(Sheet1!A1)。
- 生成 Python 代码时保持简洁,避免多余注释、冗长变量名与冗余 print;在 Excel 文件中为复杂公式或重要假设添加单元格注释,记录硬编码数据来源,并为主要计算与模型部分添加说明。
以上仅为资料中明确提供的内容;其余功能、收费、价格、平台或效果暂未提供。