Skill Hub · 诺亚 AI 能力中心 静态参考版

让每一个技能成为可信资产 —— 诺亚 Agent 生态的技能资产中心:统一注册、检测把关、按需复用。本站为 skill-hub.noahgroup.com 于 2026-08-21 的全量数据镜像。

镜像采集 2026-08-2166 个已发布技能18 个分类 · 3 条分发渠道含技能包 SKILL.md 全文
← 返回目录

xlsx

SKILL_140107539 · vv1.0 · 通用工具 · Owner:— · 发布于 2026-08-11
调用 283 下载 0 点赞 0 浏览 0
简介
专用于各类电子表格文件的读写、编辑、数据分析、清洗与公式校验修复。
触发词
Excel处理,表格数据,CSV解析,数据清洗,xlsx编辑
分发渠道
ARK Engine
功能测试
✅ 通过 · 业务评审:✅ 通过
技能包文件
xlsx/LICENSE.txt、xlsx/SKILL.md、xlsx/scripts/__pycache__/extract_workbook.cpython-311.pyc、xlsx/scripts/__pycache__/extract_workbook.cpython-314.pyc、xlsx/scripts/extract_workbook.py、xlsx/scripts/office/__pycache__/soffice.cpython-311.pyc、xlsx/scripts/office/__pycache__/soffice.cpython-312.pyc、xlsx/scripts/office/__pycache__/soffice.cpython-314.pyc …共59个文件
使用示例:分析指定xlsx文件,提取关键数据并修复公式错误。

SKILL.md 全文

Frontmatter

namexlsx
description"Use this skill any time a spreadsheet file is the primary input, output, or required supporting data source. This includes opening, reading, extracting, analyzing, editing, repairing, creating, formatting, charting, or converting .xlsx, .xlsm, .xltx, .xltm, .xls, .csv, or .tsv files; cleaning messy tabular data; or turning spreadsheet contents into structured JSON/CSV for another primary artifact workflow. Trigger especially when the user references a spreadsheet file by name or path. If another skill owns the final deliverable, use xlsx only for spreadsheet extraction/analysis/repair and hand the structured result back to that workflow."
licenseProprietary. LICENSE.txt has complete terms

XLSX creation, editing, and analysis

| Task | Approach | |---|---| | Fast inspect/extract workbook data | python scripts/extract_workbook.py file.xlsx --mode inspect or --mode extract | | Create or edit with formulas/formatting | openpyxl — see gotchas below | | Bulk data in or out | pandas (read_excel, to_excel) | | Quick look at a sheet | markitdown file.xlsx## SheetName per sheet; reads .xlsm too. No cell coordinates, so don't plan edits from it | | Read a model (formulas and values) | two load_workbook passes — see gotchas |
openpyxl, pandas, and markitdown are preinstalled — do not run pip install first; write the script and import directly. Only if an import fails (or the markitdown command is missing): pip install the missing package.
Script paths below are relative to this skill's directory.

Fast extraction path

For reading, summarizing, filtering, routing, or passing spreadsheet data to another workflow, start with:
python scripts/extract_workbook.py input.xlsx --mode inspect
python scripts/extract_workbook.py input.xlsx --mode extract --sheet "Sheet1" --max-rows 5000
python scripts/extract_workbook.py input.xlsx --mode model --include-formulas
The script outputs JSON with workbook metadata, sheet dimensions, header candidates, sample rows, merged ranges, hidden rows/columns, optional rows, and optional formula cells with cached values. It supports .xlsx, .xlsm, .xltx, .xltm, .xls, .csv, and .tsv. It tries openpyxl first, repairs empty xl/styles.xml fills once, and falls back to LibreOffice conversion for legacy or problem files. Do not spend multiple turns debugging openpyxl parser internals before using this script. Use --mode inspect for a quick overview, --mode extract for row data, and --mode model when formula strings and cached values matter. Use --sheet repeatedly for targeted extraction after the first inspect pass.

Parallelism

Parallelize independent spreadsheet reads and inspections. This is mandatory for non-trivial tasks.

Requirements for every output

Recalculate (mandatory whenever the file contains formulas)

openpyxl writes formulas as strings with no cached values. Until you recalculate, every formula cell reads back as None to anything reading cached values — pandas, load_workbook(data_only=True), and most previewers.
python scripts/recalc.py output.xlsx [timeout_seconds]   # default 30
LibreOffice computes every formula, the file is rewritten in place, and you get JSON: status (success | errors_found), total_formulas, total_errors, and an error_summary naming up to 100 cells per error type (locations_truncated says how many it withheld — trust total_errors, not the length of the list). Fix what it names and run it again. JSON with an error key instead of a status means nothing was recalculated, and only that case exits non-zero — errors_found exits 0, so never treat a clean exit as a clean workbook. **A green recalc proves your formulas evaluate, not that they are right.** An off-by-one range or a reference to the wrong row yields a clean, error-free file with wrong numbers. Write 2–3 formulas first and check they pull the values you expect, before building out a grid. A workbook that links to another file loses those links if you re-save it with openpyxl and then recalculate. Such a formula reads ='[1]Returns Analysis'!$B$2 — the [1] is an index into the workbook's external-reference list, naming a separate file on disk, not a sheet. That file is rarely present here, so the cell's cached value is the only thing holding its data. openpyxl strips that value on save; LibreOffice then has to resolve the reference for real, fails, writes #NAME?, and deletes every link. recalc.py refuses to run in that state — copy those cells' values out of the original before you save over them (--force overrides, and accepts the loss).

Choosing formulas that survive verification

LibreOffice implements fewer functions than Excel, and one it cannot evaluate becomes a literal #NAME? baked into the file you deliver.

openpyxl gotchas

Financial models

Unless the user says otherwise, or the existing file already does something else. Color: blue text (0,0,255) for hardcoded inputs and scenario levers · black for formulas · green (0,128,0) for links to another sheet · red (255,0,0) for links to another file · yellow fill (255,255,0) for key assumptions and cells the user should fill in. Numbers: currency $#,##0, with the unit named in the header (Revenue ($mm)) · zeros render as -, including in percentages ($#,##0;($#,##0);-) · negatives in parentheses · percentages 0.0%, stored as fractions (0.15 renders 15.0%; storing 15 renders 1500.0%) · valuation multiples 0.0x · years as text ("2024", never 2,024). Structure: every assumption in its own labeled cell, referenced by the formulas that use it (=B5(1+$B$6), never =B51.05) · formulas consistent across every projection period, since a lone edited cell mid-row is the commonest silent error · guard denominators that can be zero.

Dependencies

openpyxl, pandas, markitdown (pip, preinstalled — install only if an import fails or the command is missing) · LibreOffice (soffice, auto-configured for sandboxed environments via scripts/office/soffice.py)