纯前端离线Office编辑器

SKILL开发

原名 offline-office-editor

开发 未标注权限 许可证不明确
安装这个技能

提供单文件、无服务器的纯 JavaScript 实现思路,用于在浏览器里离线生成和编辑 Excel、Word、PowerPoint 文件,适合维护或扩展此类项目的功能。

一句话选型结论

按资料字段整理

纯前端离线Office编辑器是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

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

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_538e39fa/offline-office-editor
  1. 1
    确认客户端支持

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

  2. 2
    拿到技能文件

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

  3. 3
    刷新技能列表

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

  4. 4
    验证是否生效

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

技能档案

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

能做什么

0 项能力
上游给出的能力概览与适用场景
离线编辑表格文档生成xlsx与docx文件修复单文件编辑器功能

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

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

值得选的地方

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

先想清楚的地方

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

更适合

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

不太适合

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

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
纯前端离线Office编辑器当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

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

Offline Office Editor

Overview

The C:/office project is a single-page, zero-backend Office editor. Three editors
(Excel grid, Word page, PPT stage) share one index.html + per-format engine
(excel.js, word.js, ppt.js). A build step inlines every library and script
into office-standalone.html (≈5.7 MB) so it runs by double-clicking — no
server, no CDN, no network.

The hard part is not the UI; it is making Excel/Word/PPT files round-trip
correctly. SheetJS (libs/xlsx.full.min.js) reads/writes the zip/XML but silently
drops many features (conditional formatting, comments, data validation, charts,
styles, freeze panes, hyperlinks). The project's solution is a OOXML post-processing
layer
: SheetJS produces a baseline file, then small injectXxx functions rewrite
specific XML parts (worksheet, rels, [Content_Types].xml) to add what SheetJS
missed; reverse readXxx functions parse those parts back on open. Regression is
guaranteed by a jsdom harness that loads the real engine and asserts behavior.

When to use this skill

  • The user asks to add/fix any feature in the C:/office editors.
  • Any task to generate or edit .xlsx / .docx / .pptx offline, especially:
    conditional formatting (color scale, data bar, formula/cellIs rules), formula
    engine (absolute/cross-sheet refs, VLOOKUP/HLOOKUP/MATCH/INDEX/IFS), cell
    comments, data validation, charts, hyperlinks, freeze panes, row/column
    insert/delete, merged cells, custom styles.
  • When writing or debugging the jsdom regression tests for these features.

Core architecture (read this before editing)

Keep one mental model — it is the same for every feature:

  • Single source of truth = plain JS structures, NOT the OOXML. For Excel:
    data is a 2D array (ROWS × COLS); everything else is a parallel Map or
    array keyed by r + ',' + c (per-cell: styleMap, fmtMap, commentMap,
    borderMap, hyperlinks) or by a range/{r1,c1,r2,c2} (conditional
    formatting cfRules, data validation dvRules, merges). Word/PPT use analogous
    sheets[]/elements[] structures.
  • The editor renders from these structures (renderCell, renderAll). The
    file format is a serialization of them, never the source.
  • Two chain functions own the file boundary:
  • Save: buildAndSaveBuffer() → produces a Blob. Feature logic lives in
    injectXxx(zip, sheetsArr) helpers (see references/ooxml_paradigm.md).
  • Open: openWorkbook(buf) → reads via SheetJS for cell values, then calls
    readXxx(buf) helpers to recover dropped features into the JS structures.
  • Test/debug hooks: window.__excelDeep exposes internals
    (setCellValue, getCfRules, addCfRule, cfMatchCell, renderAll,
    saveToBuffer, openWorkbook, evaluate, …). The jsdom harness drives these
    to test real engine behavior without a browser.

Workflow: adding a new Excel feature

  1. Model it. Add the field to the per-cell Map or to cfRules/dvRules/
    sheets[]. Decide the in-memory shape first (e.g. a CF rule is
    {r1,c1,r2,c2,type, ...}).
  2. Render it in renderCell/renderAll (and add CSS in styles.css).
    Text must always stay above overlay elements — give .cell-input
    position:relative; z-index:1 and overlays (cf-bar, markers) a lower
    z-index with pointer-events:none.
  3. Export it via an injectXxx function that rewrites the OOXML part, and
    wire it into buildAndSaveBuffer at the right CT_Worksheet child order.
  4. Import it via a readXxx function parsing the same part; wire into
    openWorkbook (wrap in try/catch — a missing part must not break open).
  5. Expose hooks on window.__excelDeep so the harness can set state and
    read state.
  6. Write a regression test _excel_<feature>_test.js (see
    references/regression_harness.md and scripts/regression_harness.js).
  7. Rebuild + smoke: node build-standalone.js, then run
    _standalone_smoke.js to confirm 0 load-time errors.

OOXML inject/read paradigm (the non-obvious core)

This is the most important reusable knowledge. Full code patterns, buffer-type
rules, [Content_Types].xml override mechanics, rels wiring, and a worked
conditional-formatting example live in references/ooxml_paradigm.md. Read it
before writing any injectXxx/readXxx function. Key rules (do not skip):

  • Injectors take a JSZip instance and return an arraybuffer (NOT a Blob) so
    the next injector can JSZip.loadAsync it. Only the final buildAndSaveBuffer
    wraps the last buffer in new Blob([out]).
  • Always pair escapeXml with unescapeXml when round-tripping formulas or any
    text containing <, >, &, " (e.g. >A1>10< in a CF formula).
  • Keep the model type names distinct from the OOXML type names. Example: the
    in-memory CF rule uses type:'scale'|'bar'|'formula', while the OOXML
    <cfRule type="colorScale"|"dataBar"|"expression">. Map both directions; a
    mismatch silently drops the rule on save.
  • XLSX.write(..., {cellStyles:true}) then JSZip.loadAsync the array result.

jsdom regression harness

Every feature ships with a test that loads the real engine in jsdom and asserts
behavior (including full save→reopen round-trips). The template, the exact
NODE_PATH, the jsdom ^24 pin, and the two classic harness bugs (un-awaited
async in setTimeout; || -1 turning a legitimate 0 into -1) are detailed in
references/regression_harness.md and the ready-to-copy
scripts/regression_harness.js.

Resources

  • references/ooxml_paradigm.md — save/read chain, buffer types, Content_Types
    overrides, rels, worked conditional-formatting + comments examples.
  • references/regression_harness.md — jsdom harness template, env setup, gotchas.
  • scripts/regression_harness.js — copy-paste harness skeleton for a new test.

常见问题

5 问
答案由本站依据条目字段整理
纯前端离线Office编辑器怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_538e39fa/offline-office-editor。安装方式为未标注。装完刷新技能列表或重开客户端。

纯前端离线Office编辑器支持哪些客户端?

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

纯前端离线Office编辑器权限高吗,安全吗?

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

纯前端离线Office编辑器收费吗?

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

纯前端离线Office编辑器用什么许可证?

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

热门专题

按场景挑技能
全部专题 →

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