ARTICLE · 1211390
Office Preview 更新:Word 先读起来,Excel 不再只能看
想从附件里复制几行表格,页面却只给你一张图片。
想翻到长 Word 的某一节,进度条还在等;想看一份旧 PPT,最后还是得下载、找软件、重新打开。
做过 OA、知识库、网盘或者档案系统的小伙伴,对这些小麻烦应该不陌生。预览入口接上了,使用时却总差一步。
这轮 Office Preview 更新,我们把力气花在了这一步上。
Word 优先让可读页面出现,Excel 可以框选和复制,新旧 PPT 继续修正文字与图形。背后还一起调整了字体校准、大表内存、图片定位,以及切换文件时的资源释放。
下面用实际画面,把这一轮改了什么、现在能做到什么讲清楚。
新文件、旧文件,都有自己的打开方式
Office Preview 在浏览器里解析和显示文档,不需要先搭一套服务端 Office 转码服务。预览页面可作为静态资源部署,再接入业务系统的文件入口。
当前综合预览入口的支持范围如下:
Demo 内置了 DOC、DOCX、PPT、PPTX、XLS、XLSX 六类样例,可以直接打开。XLSB 和 PDF 也有对应入口,可以用自己的非敏感文件试一试;XLSB 的具体内容兼容性仍要用实际工作簿验证。
这张表里的“支持”各有侧重:Word 要看分页和行距,Excel 要看坐标和数据,PPT 要看版式与播放。我们没有把它们统一变成一组截图,再放进同一个外壳。
长 Word:不用等每一页都画完
打开一份长手册,通常是为了找某一段内容。让人等到所有字体、所有页面都处理结束,才显示正文,这个等待顺序并不合理。
新版 DOCX 把阅读过程拆得更细:先显示可读页面,优先绘制当前视窗,后台继续校准字体。 翻到后面的页面时,对应页面的绘制会得到优先处理。

阅读流程示意:页面绘制与后台字体校准配合进行,不必等每一页都画完才开始读。
这里有一个容易忽略的区别:页面先出现,不代表最终排版已经完成。字体替换会影响字宽和换行,所以比较版式时,要看字体校准后的最终页面。
页面仍然由 Canvas 分页绘制。如果业务里还需要选择、复制或搜索正文,DOCX 组件也提供文字层和定位接口,可以按需接入;当前综合 Demo 以阅读为主,默认未开启这些文字工具。

公开演示样例中的正文与表格。页面保留文档自己的版面,不重新排成普通网页段落。
还原度的改进也在继续。这轮 DOCX 主要处理了几类容易累积成排版偏差的问题:
连续分节的边界与原始内容位置,避免进入下一节时丢掉应有的信息。 表格的内容框与内边距,包含没有可见边框时的文字布局。 标点、中西文混排和单词边界,让换行依据更贴近原文档。 样式默认值、制表位引导符及自动行高,减少行与行之间的细小偏差。
旧 DOC 也没有停在“能提取文字”。本轮同步改进原始段落间距、符号字体、表格文字和图片定位,并按页分批完成显示、复用图片资源。
长文档还需要管住常驻资源。综合 Demo 把 DOCX 常驻 Canvas 页的预算设为 8 页,优先绘制视窗附近的页面。这个预算限制的是页面画布,不是整个解析过程的内存上限。
文件越长,这种区别越重要:读到第几十页时,不必让之前所有页面的绘制结果一直占着内存。
Excel:看完,还能把数据拿走
一个很常见的动作,是从报表里选出几行,贴进邮件或者另一张表。
如果预览只能展示内容,这个动作就要绕一圈。现在可以直接点击单元格、拖动框选、按住 Shift 扩选,也可以选择整行或整列,用键盘移动选区。
复制保留行列结构,按 Excel 的 TSV 规则输出。 合并单元格也会参与选区计算,不会被随意切成半块。

公开样例中的 C4:E7 选区。公式栏、行列标题和工作表标签都保留在预览界面里。
这仍然是预览与取数能力,不包含修改单元格、重算公式或保存工作簿的在线编辑流程。
表很大时,只处理眼前需要的部分
大表的解析、结构整理和窗口数据切片交给 Worker;主线程保留工作簿概况和当前、邻近视窗的数据。高行数或高单元格数的工作表采用双向虚拟滚动,向下看、向右看时,再请求需要的数据块。
这轮还压缩了行高元数据,减少大表中重复尺寸信息的占用。
选区同样不能跟着数据量无限膨胀。框选很大一片区域时,界面使用裁剪到视窗的选区层,不会为每一个选中的单元格再创建 DOM。复制也设有范围上限,避免一次生成过大的字符串把页面拖住。
图片的位置,要跟原来的行列对得上
旧 XLS 的内嵌 PNG、JPEG 图片,这次按原始行列和相对偏移定位,同时区分固定、随单元格移动、随单元格缩放三种布局。缩放或字体刷新时,也继续依据源网格处理图片尺寸。
XLSX 这边保留 DrawingML 图形解析,兼容 WPS 单元格图片关系,以及 Microsoft 365 的单元格图片结构。
对于带产品图、现场照片或说明插图的工作表,这比“文字和数字都出来了”更接近实际需求。旧 XLS 中的 WMF、EMF、DIB 和外链图片,不包含在这次新增的 PNG/JPEG 路径里。
还有个很小、却经常影响观感的变化:表格没有铺满窗口时,右侧继续显示空网格,但不拉伸原始列宽来凑满屏幕。数据在哪一列、图片锚在哪个位置,都沿用工作簿本来的坐标。
PPT:播放体验和版式细节,一起照顾
PPT 里很多信息藏在布局中。表格跨了几列,标题继承哪套母版字体,箭头和说明框如何对齐,都会影响读者理解。
旧版 PPT 本轮改进了母版字体与图形几何,并完善销毁、缩放任务的生命周期。连续切换文件或改变窗口大小时,旧任务应该及时结束,不能继续影响新页面。
PPTX 则同步到现行稳定能力:合并表格、嵌入字体、旧公式文字和 SVG 资源隔离。后者处理的是多个 SVG 资源放在同一页面时,内部定义互相干扰的问题。

公开演示样例中的图表页。左侧查看缩略图,右侧保留幻灯片比例,也可以切换阅读模式。
PPTX 的预览也包括放映:页面切换、点击动画组、自动播放、循环和播放速率都有对应能力;页面与缩略图按需渲染,资源通过窗口和预算管理。
所以演示文稿可以翻页看,也可以按支持的动画时序播放。遇到复杂动画、3D 效果或者 OLE 原生交互,仍需按实际文件检查,不能把浏览器预览当成完整 PowerPoint 编辑环境。
接入时,保留你已经做好的系统
已经接了 File Viewer,或者已经有一套附件中心,不需要为了 Office 预览把登录、权限、列表和下载流程重写一遍。
保留原来的业务入口,只把 Office 文件分流到对应预览页。 其他格式仍走原来的处理逻辑。
一种直接的接法,是把预览静态资源部署在业务同源路径,用 iframe 承载:
<iframeid="office-preview"title="文档预览"style=" width:100%; height:80vh; border:0; "></iframe>然后传入文件读取路径、格式和显示名称:
const frame = document.querySelector('#office-preview');const viewer = newURL('/office-preview/', location.origin);viewer.search = newURLSearchParams({file: '/api/attachments/42/content',type: 'docx',name: '项目接入手册.docx'}).toString();frame.src = viewer.href;这里的 /api/attachments/42/content 是业务文件接口示例,不是 Demo 的现成接口。后端仍要检查当前用户是否有权读取该附件,再返回文件内容。也可以使用后端签发的短时文件路径;链接里的文件地址需要与预览页同源。
接口返回的路径不必带 .docx 后缀,type 用来明确格式。Vue、React 等业务页面也可以使用这种独立预览入口,不用让文档渲染器接管整个应用。
Windows 桌面系统则有 WPF + WebView2 接入示例,支持显式格式、无扩展名文件路径、只读文件流,以及渲染状态回传。
部署时还要把字体考虑进去。默认字体服务需要网络;内网和离线环境应准备有使用权的本地字体及配套静态资源。浏览器负责解析,不等于业务权限、字体和资源配置可以省略。
好不好用,拿一份常用附件来试
最有代表性的文件,往往就在日常工作里。
可以先用一份非敏感手册,检查目录后的正文、连续分节和跨页表格;再用一张带图片的报表,试试滚动、框选、复制和切换工作表;最后打开新旧 PPT,看看母版、图表、字体和常用播放效果。
这些动作,比只看文件能不能加载完成,更能判断预览是否适合自己的系统。
这轮更新想做好的,就是让这些动作顺一些:需要阅读时尽早看到正文,需要取数时能直接复制,需要看旧资料时也有合适的入口。
点击文末「阅读原文」,打开 Office Preview 在线 Demo。 内置样例可以直接体验,也可以选择自己的非敏感文件,看看那些熟悉的段落、表格和幻灯片,在网页里读起来怎么样。















































































