xlsx-official - SKILL

发布时间:2026/9/8 18:02:30
xlsx-official - SKILL name: xlsx-officialdescription: “Unless otherwise stated by the user or existing template”risk: criticalsource: communitydate_added: “2026-02-27”输出要求所有 Excel 文件零公式错误每个 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”货币使用KaTeX parse error: Expected EOF, got # at position 1: #̲,##0 格式始终在表头中指…mm)零值使用数字格式使所有零显示为 “-”包括百分比例如 “KaTeX parse error: Expected EOF, got # at position 1: #̲,##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”XLSX 创建、编辑和分析概述用户可能要求您创建、编辑或分析 .xlsx 文件的内容。不同的任务有不同的工具和工作流可用。重要要求公式重算需要 LibreOffice可以假设已安装 LibreOffice用于通过recalc.py脚本重算公式值。该脚本会在首次运行时自动配置 LibreOffice读取和分析数据使用 pandas 进行数据分析对于数据分析、可视化和基本操作使用pandas它提供强大的数据操作能力importpandasaspd# Read Exceldfpd.read_excel(file.xlsx)# Default: first sheetall_sheetspd.read_excel(file.xlsx,sheet_nameNone)# All sheets as dict# Analyzedf.head()# Preview datadf.info()# Column infodf.describe()# Statistics# Write Exceldf.to_excel(output.xlsx,indexFalse)Excel 文件工作流关键使用公式而非硬编码值始终使用 Excel 公式而不是在 Python 中计算值并硬编码。这确保电子表格保持动态和可更新。❌ 错误做法 - 硬编码计算值# Bad: Calculating in Python and hardcoding resulttotaldf[Sales].sum()sheet[B10]total# Hardcodes 5000# Bad: Computing growth rate in Pythongrowth(df.iloc[-1][Revenue]-df.iloc[0][Revenue])/df.iloc[0][Revenue]sheet[C5]growth# Hardcodes 0.15# Bad: Python calculation for averageavgsum(values)/len(values)sheet[D20]avg# Hardcodes 42.5✅ 正确做法 - 使用 Excel 公式# Good: Let Excel calculate the sumsheet[B10]SUM(B2:B9)# Good: Growth rate as Excel formulasheet[C5](C4-C2)/C2# Good: Average using Excel functionsheet[D20]AVERAGE(D2:D19)这适用于所有计算——总计、百分比、比率、差额等。当源数据变化时电子表格应能够重新计算。常见工作流选择工具数据用 pandas公式/格式用 openpyxl创建/加载创建新工作簿或加载现有文件修改添加/编辑数据、公式和格式保存写入文件重算公式如果使用公式则强制要求使用 recalc.py 脚本python recalc.py output.xlsx验证并修复任何错误脚本返回包含错误详情的 JSON如果status为errors_found检查error_summary中的具体错误类型和位置修复已识别的错误并再次重算要修复的常见错误#REF!无效的单元格引用#DIV/0!除以零#VALUE!公式中的数据类型错误#NAME?无法识别的公式名称创建新的 Excel 文件# Using openpyxl for formulas and formattingfromopenpyxlimportWorkbookfromopenpyxl.stylesimportFont,PatternFill,Alignment wbWorkbook()sheetwb.active# Add datasheet[A1]Hellosheet[B1]Worldsheet.append([Row,of,data])# Add formulasheet[B2]SUM(A1:A10)# Formattingsheet[A1].fontFont(boldTrue,colorFF0000)sheet[A1].fillPatternFill(solid,start_colorFFFF00)sheet[A1].alignmentAlignment(horizontalcenter)# Column widthsheet.column_dimensions[A].width20wb.save(output.xlsx)编辑现有的 Excel 文件# Using openpyxl to preserve formulas and formattingfromopenpyxlimportload_workbook# Load existing filewbload_workbook(existing.xlsx)sheetwb.active# or wb[SheetName] for specific sheet# Working with multiple sheetsforsheet_nameinwb.sheetnames:sheetwb[sheet_name]print(fSheet:{sheet_name})# Modify cellssheet[A1]New Valuesheet.insert_rows(2)# Insert row at position 2sheet.delete_cols(3)# Delete column 3# Add new sheetnew_sheetwb.create_sheet(NewSheet)new_sheet[A1]Datawb.save(modified.xlsx)重算公式由 openpyxl 创建或修改的 Excel 文件将公式作为字符串包含但没有计算值。使用提供的recalc.py脚本重算公式python recalc.pyexcel_file[timeout_seconds]示例python recalc.py output.xlsx30该脚本首次运行时自动设置 LibreOffice 宏重算所有工作表中的所有公式扫描所有单元格以查找 Excel 错误#REF!、#DIV/0! 等返回包含详细错误位置和计数的 JSON适用于 Linux 和 macOS公式验证检查清单快速检查以确保公式正常工作基本验证测试 2-3 个示例引用在构建完整模型之前验证它们是否拉取正确的值列映射确认 Excel 列匹配例如第 64 列 BL而非 BK行偏移记住 Excel 行从 1 开始索引DataFrame 第 5 行 Excel 第 6 行常见陷阱NaN 处理使用pd.notna()检查空值最右侧列财年数据通常在 50 列多个匹配搜索所有出现位置而不仅仅是第一个除以零在公式中使用/之前检查分母#DIV/0!错误引用验证所有单元格引用指向预期的单元格#REF!跨工作表引用使用正确的格式Sheet1!A1来链接工作表公式测试策略从小处开始在广泛应用之前先在 2-3 个单元格上测试公式验证依赖检查公式中引用的所有单元格都存在测试边缘情况包括零、负数和非常大的值解读 recalc.py 输出该脚本返回包含错误详情的 JSON{status:success,// or errors_foundtotal_errors:0,// Total error counttotal_formulas:42,// Number of formulas in fileerror_summary:{// Only present if errors found#REF!:{count:2,locations:[Sheet1!B5,Sheet1!C10]}}}最佳实践库选择pandas最适合数据分析、批量操作和简单数据导出openpyxl最适合复杂格式、公式和 Excel 特定功能使用 openpyxl单元格索引从 1 开始row1, column1 指单元格 A1使用data_onlyTrue读取计算值load_workbook(file.xlsx, data_onlyTrue)警告如果以data_onlyTrue打开并保存公式会被值替换并永久丢失对于大文件读取使用read_onlyTrue写入使用write_onlyTrue公式被保留但不会求值——使用 recalc.py 更新值使用 pandas指定数据类型以避免推断问题pd.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 代码时编写简洁的 Python 代码避免不必要的注释避免冗长的变量名和冗余操作避免不必要的 print 语句对于 Excel 文件本身为具有复杂公式或重要假设的单元格添加注释记录硬编码值的数据来源为关键计算和模型部分包含说明何时使用此技能适用于执行概述中描述的工作流或操作。限制仅当任务与上述范围明确匹配时才使用此技能。不要将输出视为环境特定验证、测试或专家审查的替代品。如果缺少所需的输入、权限、安全边界或成功标准请停下来询问澄清。

相关新闻