【用途】 该技能用于创建、编辑和分析 .xlsx 文件的场景。用户可能提出对 Excel 文件的创建、修改或内容分析需求,此技能提供相应的工具与工作流。需要说明的是,资料中未提供该技能的具体安装方式、触发条件或平台支持范围,这些信息暂未提供。
【输出通用要求】 所有 Excel 文件应使用一致、专业的字体(例如 Arial、Times New Roman),除非用户另有指示。每个 Excel 模型交付时必须零公式错误,不得出现 #REF!、#DIV/0!、#VALUE!、#N/A、#NAME? 等错误。更新模板时,应研究并严格匹配现有格式、样式和约定,不得将标准化格式强加于已有既定模式的文件,现有模板约定始终优先于本指南。
【财务模型规范】 颜色编码标准(除非用户或现有模板另有说明):蓝色文本(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% 格式(一位小数);倍数格式化为 0.0x(用于 EV/EBITDA、P/E 等估值倍数);负数使用括号 (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: Bloomberg Terminal, 8/15/2025, AAPL US Equity”。
【读取与分析数据】 可使用 pandas 进行数据分析、可视化和基本操作,示例代码为:import pandas as pd;df = pd.read_excel('file.xlsx') 读取第一个工作表;all_sheets = pd.read_excel('file.xlsx', sheet_name=None) 读取所有工作表为字典;df.head() 预览、df.info() 列信息、df.describe() 统计;df.to_excel('output.xlsx', index=False) 写出。
【Excel 文件工作流】 关键原则是使用公式而非硬编码值。应在 Python 中计算并硬编码结果的做法是错误的,正确做法是使用 Excel 公式,如 sheet['B10'] = '=SUM(B2:B9)'、sheet['C5'] = '=(C4-C2)/C2'、sheet['D20'] = '=AVERAGE(D2:D19)'。这适用于所有计算——总计、百分比、比率、差异等,电子表格应能在源数据变化时重新计算。 通用工作流:选择工具(数据处理用 pandas,公式/格式用 openpyxl);创建或加载工作簿;修改数据、公式和格式;保存文件;如果使用公式则必须用 python scripts/recalc.py output.xlsx 重算;检查脚本返回的 JSON 错误详情,若 status 为 errors_found 则查看 error_summary 中的错误类型和位置,修复后再次重算。常见需修复错误包括 #REF!(无效单元格引用)、#DIV/0!(除零)、#VALUE!(公式中数据类型错误)、#NAME?(无法识别的公式名称)。
【创建与编辑】 创建新文件使用 openpyxl 的 Workbook、Font、PatternFill、Alignment,可添加数据、公式(如 sheet['B2'] = '=SUM(A1:A10)')、格式、列宽等,最后 wb.save('output.xlsx')。编辑现有文件使用 load_workbook 以保留公式和格式,可遍历 wb.sheetnames、修改单元格、insert_rows、delete_cols、create_sheet,最后保存。
【重算公式】 openpyxl 创建或修改的 Excel 文件只包含公式字符串而不含计算值,需要用 scripts/recalc.py 重算:python scripts/recalc.py <excel_file> [timeout_seconds],例如 python scripts/recalc.py output.xlsx 30。该脚本首次运行自动设置 LibreOffice 宏,重算所有工作表的所有公式,扫描所有单元格中的 Excel 错误,返回带详细错误位置和数量的 JSON,支持 Linux 和 macOS。前提是可假定已安装 LibreOffice,脚本首次运行会自动配置,包括在 Unix socket 受限的沙箱环境中(由 scripts/office/soffice.py 处理)。
【公式验证清单】 必要验证包括:测试 2-3 个样本引用,在构建完整模型前确认其取值正确;确认 Excel 列映射正确(如第 64 列是 BL 而非 BK);注意 Excel 行从 1 开始索引(DataFrame 第 5 行 = Excel 第 6 行)。常见陷阱:用 pd.notna() 检查空值;FY 数据常在 50+ 列;搜索所有匹配项而非仅第一处;除法前检查分母;验证所有单元格引用指向预期单元格;跨工作表引用使用正确格式(Sheet1!A1)。公式测试策略:先在小范围测试再推广,验证公式引用的单元格均存在,测试零值、负数和极大值等边界情况。
【recalc.py 输出解读】 脚本返回 JSON,包含 status(success 或 errors_found)、total_errors(错误总数)、total_formulas(文件中的公式数量),仅在发现错误时包含 error_summary(按错误类型列出 count 和 locations,如 #REF! 的 Sheet1!B5、Sheet1!C10)。
【最佳实践】 库选择:pandas 最适合数据分析、批量操作和简单数据导出;openpyxl 最适合复杂格式、公式和 Excel 特有功能。使用 openpyxl 时单元格索引从 1 开始;用 data_only=True 读取计算值,但需注意若以 data_only=True 打开并保存,公式会被值替换并永久丢失;大文件读取用 read_only=True、写入用 write_only=True;公式会被保留但不会求值,需用 scripts/recalc.py 更新值。使用 pandas 时指定数据类型避免推断问题(如 pd.read_excel('file.xlsx', dtype={'id': str}));大文件读取指定列(如 usecols=['A','C','E']);正确处理日期(如 parse_dates=['date_column'])。代码风格:生成 Excel 操作的 Python 代码时,编写最少、简洁的代码,不加多余注释,避免冗长变量名和冗余操作,避免不必要的 print 语句。对 Excel 文件本身:为复杂公式或重要假设的单元格添加注释,为硬编码值记录数据来源,为主要计算和模型部分添加说明。
【适用场景与限制】 适用场景涵盖数据分析、财务建模、Excel 文件创建与编辑等。限制方面:需假定已安装 LibreOffice 才能重算公式;使用 data_only=True 打开并保存会丢失公式;资料未提供具体安装命令、触发方式、收费模式或平台支持等信息,这些内容暂未提供。