【免费下载链接】office-open-xml-viewer
A browser-based viewer for Office Open XML documents that renders to an HTML Canvas element.
office-open-xml-viewer 是一个基于浏览器 Canvas 的 Office Open XML 文档查看器,它自带的 VS Code 插件让你在编辑器里直接打开 .docx、.xlsx、.pptx 文件,还能一键启用 MCP Server,把文件内容和当前选区交给 Copilot AI Agent 阅读。本文带你从零完成安装、预览到 AI 集成的完整实战。
一、为什么需要编辑器内的 Office 预览?
日常开发中我们经常要打开同事发来的 Word 合同、Excel 报表、PPT 方案。传统做法是切出编辑器、启动 Office 软件、再切回来。而 office-open-xml-viewer 的思路是:把高保真 Office 预览直接做成 VS Code 的自定义编辑器。
它的底层架构很有看点:
- 解析:三种格式各有一个独立的 Rust 解析器,编译为 WebAssembly(WASM),精确且快速
- 渲染:基于 HTML Canvas 2D 绘制,还原主题色、图表、公式、条件格式等细节
- 隐私:解析与渲染全部在本地 Webview 内完成,默认完全离线,无任何遥测和文档外发请求
插件源码位于 packages/vscode-extension/,MCP 服务端实现位于 packages/mcp-server/。
二、一键安装:让 Office 文件自动"接管"预览
2.1 安装与默认打开方式
- 在 VS Code 扩展市场搜索 Office Viewer — DOCX, XLSX, PPTX 并安装
- 安装完成后,任意
.docx/.xlsx/.pptx文件会自动以 OOXML Viewer 作为默认编辑器打开
如果其他编辑器抢先打开了文件,可以右键文件 → Reopen Editor With… → 选择 OOXML Viewer,并顺手勾选 Configure default editor 设为默认。
2.2 三种格式的预览体验
| 格式 | 核心体验 |
|---|---|
| 📄 DOCX | 连续滚动查看整篇文档,透明文本层支持拖选复制纯文本(类似 PDF.js) |
| 📊 XLSX | 单元格/行/列/区域选择,Ctrl+C 复制为 TSV,冻结窗格、多 Sheet 标签页 |
| 📽️ PPTX | 连续滚动浏览全部幻灯片,正确支持旋转文本框,内嵌音视频可交互播放 |
文档内搜索:在任意预览中按 Ctrl+F / Cmd+F,可跨整篇文档、整个工作簿或全部幻灯片搜索(不区分大小写),Enter / Shift+Enter 在匹配项间跳转——即使目标页/页/幻灯片尚未渲染也会命中。
字体替换(可选):Office 文件常引用本机没有的字体(如 Calibri)。开启 ooxmlViewer.useGoogleFonts 后,预览会从 Google Fonts CDN 加载 Carlito、Caladea 等替代字体,让版式更接近 Office 原文;默认关闭,保持完全离线。
三、一键连接 Copilot:启用 MCP Server
这是本插件最亮眼的功能——让 AI Agent 不再手动解压 XML,而是调用类型化工具直接读 Office 文件。
3.1 三步启用 MCP Server
- 打开一个包含
.xlsx/.docx/.pptx文件的工作区,扩展会主动提示启用 MCP Server(首次点击 Enable 会下载约 5 MB 的预编译二进制,经 SHA256 校验,后续工作区复用缓存) - 在命令面板(
Ctrl+Shift+P)执行 OOXML Viewer: Install / Enable MCP Server - 执行 MCP: List Servers,确认
ooxml-mcp-server出现在列表中
相关命令与设置项的实现在 installer.ts 与 provider.ts 中。
3.2 AI Agent 获得了哪些"超能力"
启用后,Copilot(Agent 模式)可以调用一整套类型化工具,例如:
| 工具 | 作用 |
|---|---|
xlsx_get_cell_range | 读取 A1:C10 这类区域单元格的值与公式 |
xlsx_search_cells | 在整个工作簿中搜索包含指定字符串的单元格 |
docx_extract_text | 提取 Word 全文纯文本 |
docx_get_tables | 获取 Word 中所有表格的单元格内容 |
pptx_get_slide_structure | 解析指定幻灯片的形状、位置与文本 |
pptx_search_text | 跨幻灯片搜索文本片段 |
工具的完整清单与参数说明见 packages/mcp-server/README.md。
3.3 关键设置项速查
ooxmlViewer.mcpServer.enabled:auto(默认,仅当工作区含 OOXML 文件时提示)/always/neverooxmlViewer.mcpServer.restrictToWorkspaceFolders:默认true,文件工具只能读取工作区内的文件;越界请求会返回path_outside_allowed_roots错误ooxmlViewer.mcpServer.binaryPath:可选,指向你已安装的ooxml-mcp-server二进制
如果不想走扩展提示,也可以手动从源码构建二进制:
git clone https://gitcode.com/gh_mirrors/of/office-open-xml-viewer
cargo install --path packages/mcp-server
四、进阶实战:选中内容,直接问 AI
这是普通 MCP 配置做不到的独门技巧:扩展不仅暴露文件工具,还能把当前预览中的选区作为上下文交给 Agent。
选区桥接由 selectionBridge.ts 实现:选区快照保存在扩展内存中,通过认证的 IPv4 回环通道传给 MCP 子进程,从不落盘。
4.1 典型玩法
- 在 XLSX 预览中框选一段数字区域,问:"Evaluate these numbers"
- 在 DOCX 预览中选中一段文字,问:"Explain this paragraph"
- 在任意格式中点击图表、图片或形状,问:"Find related information for this element"
选区通过 ooxml_get_active_context 工具以 {format, kind} 的只读快照形式返回,例如 XLSX 的区域选区会带上表格身份、单元格值与公式;选区是只读上下文,扩展不提供任何编辑或保存操作。
4.2 让选区生效的关键注意点
⚠️ 不要再手动往 .vscode/mcp.json 里加一条独立的 ooxml 配置。手动启动的独立进程没有选区桥接,文件工具可用,但 ooxml_get_active_context 会返回 available: false。正确的顺序是:
- 安装/更新扩展后重载 VS Code 窗口
- 执行 OOXML Viewer: Install / Enable MCP Server
- 用扩展注册的 MCP 定义,在 Copilot Chat 切到 Agent 模式提问
各格式的 Webview 编辑器实现在 docxEditor.ts、xlsxEditor.ts、pptxEditor.ts。
五、隐私设计与已知限制
隐私方面,插件的边界很清晰:
- 只读打开文件,从不写回
- Webview 默认 CSP 阻断一切外部连接;唯一例外是显式开启的 Google Fonts 替换
- MCP Server 需显式同意后才下载,之后完全本地运行,不回传任何数据
已知限制(摘自 packages/vscode-extension/README.md):
- XLSX:公式从不重算,显示文件中缓存的值;条件格式基于部分公式求值器
- DOCX:图片环绕、脚注、页眉页脚渲染可能与 Word 略有差异
- PPTX:个别生僻预设形状退化为矩形占位;MP4 中的 AAC 音轨无法出声(视频正常)
六、小结
office-open-xml-viewer 的 VS Code 插件把三件事做到了一体:开箱即用的 Office 预览(三种格式连续滚动 + 全文搜索 + 原生复制)、一行命令的 AI 集成(MCP Server 让 Copilot 直接读 Office 文件)、以及选区即上下文的独门体验。它默认离线、只读、可审计,非常适合把"看文档"和"问 AI"留在同一个编辑器窗口里完成。
📌 延伸阅读:插件功能全览 packages/vscode-extension/README.md、MCP 工具清单 packages/mcp-server/README.md、项目总览 README.md
【免费下载链接】office-open-xml-viewer
A browser-based viewer for Office Open XML documents that renders to an HTML Canvas element.
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考







