xlsx纯标准库只读解析法

SKILL效率
效率 未标注权限 许可证不明确
安装这个技能

系统需要读取已有 .xlsx 数据,但环境无 openpyxl(HFMS 两 Python 均无),且要求纯标准库零依赖。典型:把 Excel 数据源(财务账目、健康监测表、资产清单)导入 HFMS 台账前的探查与解析。输出 {sheet名: [ {列号: 单元格值} ... ]},业务层再按列号映射字段。

一句话选型结论

按资料字段整理

xlsx纯标准库只读解析法是效率类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类效率 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_6f47e228/xlsx-chun-biao-zhun-ku-zhi-du-jie-xi-fa
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

效率
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_6f47e228仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量5.6 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
整理待办与日程

把零散任务收进清单,排出优先级。

批量处理重复任务

把固定动作做成模板,重复执行。

把流程写成清单

把口头流程整理成可复用的步骤。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在效率场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
xlsx纯标准库只读解析法当前 未标注权限 未标注 未标注 未标注 有
Nano PDF 文档 联网访问 ClawHub 市场 424.9 万 OpenClaw 有
自动更新程序 浏览器控制 ClawHub 市场 296.4 万 OpenClaw 有
Gemini 助手 联网访问 ClawHub 市场 254.7 万 OpenClaw 有
word DOCX 文档 联网访问 ClawHub 市场 239.6 万 OpenClaw 有
Excel XLSX 前端 联网访问 ClawHub 市场 227.0 万 OpenClaw 有

SKILL.md 全文

5.6 KB
模型实际读到的说明书原文,来自技能仓库

xlsx纯标准库只读解析法

适用场景

系统需要读取已有 .xlsx 数据,但环境无 openpyxl(HFMS 两 Python 均无),且要求纯标准库零依赖。典型:把 Excel 数据源(财务账目、健康监测表、资产清单)导入 HFMS 台账前的探查与解析。输出 {sheet名: [ {列号: 单元格值} ... ]},业务层再按列号映射字段。

操作步骤

  1. 开包与共享字符串:zipfile.ZipFile(path);若含 xl/sharedStrings.xml,先解析为 shared[](<si><t> 拼接),供 t="s" 单元格按索引取串。
  2. sheet 名 + 路径映射:读 xl/workbook.xml 拿 (name, r:id);读 xl/_rels/workbook.xml.rels 把 rId→Target。Target 可能带前导 /(/xl/worksheets/sheetN.xml),必须先 lstrip('/') 再判 startswith('xl/'),否则路径变 xl//xl/... 报 KeyError。
  3. 单元格取值:遍历 worksheet 的 row/c,按 t:s→shared[int(v)];inlineStr→<is><t> 拼接;无 t 或 t="n"→<v> 数值;t="str"→公式串。列字母 col_to_idx(A=0 26 进制),ref 拆 col+row。
  4. 返回结构:{sheet名: [ {colIdx: val}, ... ]}(仅非空行),业务层按列号取字段。
  5. 日期换算:Excel 日期常为序列号(自 1899-12-30 起的天数),用 date(1899,12,30)+timedelta(days=int(n));时间分数(0.0833=02:00)用 *24 取 HH:MM。

核心解析器(可直接复用)

import zipfile, re, datetime, xml.etree.ElementTree as ET
NS = "{http://schemas.openxmlformats.org/spreadsheetml/2006/main}"
def col_to_idx(col):
 i = 0
 for ch in col: i = i * 26 + (ord(ch) - ord('A') + 1)
 return i - 1
def split_ref(ref):
 m = re.match(r"([A-Z]+)(\d+)", ref); return m.group(1), int(m.group(2))
def read_xlsx(path):
 z = zipfile.ZipFile(path); sh = []
 if "xl/sharedStrings.xml" in z.namelist():
 for si in ET.fromstring(z.read("xl/sharedStrings.xml")).findall(NS + "si"):
 sh.append("".join(t.text or "" for t in si.iter(NS + "t")))
 wb = ET.fromstring(z.read("xl/workbook.xml")); sheets = []
 for s in wb.find(NS + "sheets").findall(NS + "sheet"):
 sheets.append((s.get("name"),
 s.get("{http://schemas.openxmlformats.org/officeDocument/2006/relationships}id")))
 rels = ET.fromstring(z.read("xl/_rels/workbook.xml.rels")); r2t = {}
 for r in rels.findall("{http://schemas.openxmlformats.org/package/2006/relationships}Relationship"):
 r2t[r.get("Id")] = r.get("Target")
 out = {}
 for name, rid in sheets:
 t = r2t[rid].lstrip("/"); t = t if t.startswith("xl/") else "xl/" + t
 root = ET.fromstring(z.read(t)); rows = []
 for row in root.iter(NS + "row"):
 cells = {}
 for c in row.findall(NS + "c"):
 col, num = split_ref(c.get("r")); tt = c.get("t")
 v = c.find(NS + "v"); is_ = c.find(NS + "is")
 if tt == "s" and v is not None: val = sh[int(v.text)]
 elif tt == "inlineStr" and is_ is not None:
 val = "".join(x.text or "" for x in is_.iter(NS + "t"))
 elif v is not None: val = v.text
 else: val = ""
 cells[col_to_idx(col)] = val
 if cells: rows.append(cells)
 out[name] = rows
 return out

注意边界

  • 覆盖最常见布局(共享串 + 内联串 + 数值);合并单元格、公式结果(<v> 已是缓存值)、富文本 <r> 按现有逻辑够用。
  • 单元格 t 缺省且 <v> 是数字=数值;t="s" 才查共享串——务必先判 t 再取,否则串被当数字。
  • 日期是序列号而非文本时,必须换算;文本日期用 datetime.fromisoformat 校验,别用 SQL GLOB '____-__-__'(_ 是字面量非通配符,会假阳性报"非法日期")。
  • 源表常有脏数据:转置宽表、参考列("标准*")、姓名/出生日期元数据行——业务层按列号 + 数值范围过滤,解析器不负责。

反例避雷

  • Target 带前导 / 不 lstrip('/') → xl//xl/worksheets/... KeyError(ZQ 资产踩坑,已修)。
  • 用 GLOB '_' 判非法日期 → 误报"非法日期149"(CW 财务踩坑);改用 datetime.fromisoformat 异常捕获。
  • 把"标准高压/低压"参考列或"姓名/出生日期"元数据当数据行 → 导入污染;按 col6 非数字 / 数值越界 过滤。
  • 引 openpyxl → 违反纯标准库零依赖;手写 OOXML 读取即可。

关联笔记

  • [[技能|xlsx报表纯标准库离线导出法]](互补:导出用 inlineStr 写,本技能用 zipfile 读)
  • [[技能|台账体系SPECS驱动扩展法]]

实战战绩

2026-10-03 实战:CW 财务(房租水电/保险/工资,11 sheet 结构化表)、HL 健康(血压身高体重转置宽表 + 脏模板、陈逐时体温)、ZQ 资产清单查重(291 条只读镜像比对),全部用此解析器,零第三方依赖。

版本记录

版本 日期 变更
v1.0.0 2026-10-03 据本会话 4 次 xlsx 读取实战固化,含绝对路径 Target lstrip('/') 修复与序列号日期换算

常见问题

5 问
答案由本站依据条目字段整理
xlsx纯标准库只读解析法怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_6f47e228/xlsx-chun-biao-zhun-ku-zhi-du-jie-xi-fa。安装方式为未标注。装完刷新技能列表或重开客户端。

xlsx纯标准库只读解析法支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

xlsx纯标准库只读解析法权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

xlsx纯标准库只读解析法收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

xlsx纯标准库只读解析法用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。