WPS Office
办公套件 · 文档兼容 · pdf
国内常用办公套件,兼容常见 Office 格式,个人基础功能免费。
正在打开工具详情…
开源办公套件:文档、表格、演示,能开常见 Office 文件。
要离线改文档和表格,不想订 Microsoft 365。
必须使用仅在 Microsoft 365 里的协作功能或宏生态。
LibreOffice 是开源办公套件,Writer 管文档、Calc 管表格、Impress 管演示,另有 Draw 与 Base。它能打开并保存 .docx / .xlsx / .pptx,也能导出 PDF。对多数人它解决的是「不订 Microsoft 365 也能把 Office 文件改完」:格式能对上大部分,日常改个段落、调个公式、换个页边距不需要另找软件。
兼容性的边界要提前知道。简单到中等复杂度的文档基本无损,但复杂 PPT 动画、带 VBA 宏的 Excel、SmartArt 以及某些老模板会出错位或丢内容——不是打不开,是打开后样子不对。稳妥做法是交稿前用对方实际使用的软件再打开核对一遍。另外它的默认格式是开放文档格式(.odt / .ods / .odp),这个格式本身是优势:不绑定单一厂商,长期可读性比专有格式好。
想参与开发的话有个坑:GitHub 上的 LibreOffice/core 是只读镜像,提交走 Gerrit(gerrit.libreoffice.org),而且仓库描述里明确写了别直接下载 zip、要用 dev-www.libreoffice.org 的构建包。找源码可以,提 PR 要去对地方。
许可证是 MPL-2.0,项目同时要求贡献者按 MPL-2.0 与 LGPL-3.0+ 双许可授权(官方许可证页原文:license your code to us jointly under both the Mozilla Public License v2 and the GNU Lesser GPL v3+ licenses),所以交付给用户的二进制按 MPL-2.0。Windows、macOS、Linux 都有安装包。
上手步骤之外的具体做法:常见场景怎么配、命令怎么写、报错怎么处理。
讲清 ODF 与 MS 格式的兼容边界、字体替换的排版陷阱、宏与 PDF 导出流程,解决「文档发出去版式全乱」的问题。
LibreOffice 原生格式是 ODF(.odt .ods .odp),同时能读写 MS 格式。但「能打开」不等于「完全一致」。
| 格式 | 保真度 | 说明 |
|---|---|---|
.odt / .ods | 最高 | 原生格式,LibreOffice 内部无损 |
.docx / .xlsx | 较高 | 复杂排版与部分图表可能有偏差 |
.doc / .xls | 一般 | 旧版二进制格式,特性被砍掉很多 |
.rtf | 中等 | 通用但会丢结构 |
稳妥的做法:内部编辑用 ODF,交付时另存为目标格式,并打开另存后的文件检查一遍。另存为的位置是「文件 > 另存为」,选好格式后记得勾上「编辑过滤器设置」以控制细节。
批量转换可以走命令行,适合没有界面或需要脚本化的场景:
bashsoffice --headless --convert-to pdf *.docx --outdir ./out
soffice --headless --convert-to "xlsx:Calc MS Excel 2007 XML" *.ods--headless 在部分版本下会因 profile 冲突报错,需要显式指定:soffice -env:UserInstallation=file:///tmp/lo --headless --convert-to pdf report.docx。
打开别人文档后行距、页数、换行全变,几乎都是字体缺失导致的。LibreOffice 找不到原字体时会自动替换,替换字体的字宽不同,排版随之全乱。
排查顺序:先在「工具 > 选项 > LibreOffice > 字体」的替换表里看哪些字体被换了;目标机器没装的字体要么装上、要么映射到度量相近的字体;发送前先导出 PDF —— PDF 会嵌入字体子集,是唯一能保证版式不跑的做法。
长期稳定协作时,字体管理比软件选择更关键 —— 团队统一字体,或用 Google Fonts 这类可自由分发的字体。
宏的入口是「工具 > 宏 > 编辑宏」或 Basic IDE。用 Basic 写与 Office 的 VBA 略有差别,UNO API 的典型写法如下:
basicSub 插入页码
Dim oDoc As Object, oStyle As Object
oDoc = ThisComponent
' 取当前页样式并打开页脚
oStyle = oDoc.StyleFamilies.getByName("PageStyles") _
.getByName(oDoc.CurrentController.ViewCursor.PageStyleName)
oStyle.FooterIsOn = True
oStyle.FooterIsShared = True
oStyle.FooterText.setString("第 &P 页 / 共 &N 页")
End SubThisComponent 是当前文档对象,&P &N 是页码与总页数的字段占位符。跨平台路径用 ThisComponent.getURL() 取,不硬编码盘符。
宏存在文档里会触发安全提示,收件人需手动启用。要免提示就得把宏放进用户配置目录(~/.config/libreoffice/4/user/basic/),但这样别人就拿不到宏。
公式分隔符在各地区默认不同:英文区域用逗号,中文区域常用分号,用逗号可能报 Err:508。改法:「工具 > 选项 > Calc > 公式 > 公式语法」切换为 Excel A1 或 Calc A1。
跨软件读 CSV 时,日期与数字格式最容易出错。明确指定分隔符与编码更稳:
bashsoffice --headless --convert-to "csv:Text - txt - csv (StarCalc):44,34,76" data.xlsx末尾参数依次是分隔符(44 为逗号)、文本分隔符(34 为双引号)、字符集(76 为 UTF-8)。这串数字不好记,更实际的做法是用 Python 的 pandas 直接读写。
「文件 > 导出为 > 导出为 PDF」里几项值得留意:
需要更细的说明时,LibreOffice 帮助中心(在新标签页打开) 有每个功能的完整文档。
同一需求下可以先试这些,尤其是不想买商业许可的时候。
办公套件 · 文档兼容 · pdf
国内常用办公套件,兼容常见 Office 格式,个人基础功能免费。
笔记 · Markdown · 知识管理
本地 Markdown 笔记,适合长期积累和双向链接。