ARTICLE · 1211616
Excel 两种格式 XLS 和 XLSX 有什么区别?日常保存选哪个格式好?
Excel 的扩展名确实挺多,但平时最常碰到的还是 XLS、XLSX 和 XLSM。区别不只是新旧版本,能装多少数据、能不能保存宏,都不一样。
一、格式
XLS 是 Excel 97—2003 时代的二进制格式,一张表最多 65,536 行、256 列,能保存 VBA 宏。现在还在用它,多半是为了兼容老系统。
XLSX 是 Excel 2007 以后常见的工作簿,内部是压缩的 XML 文件,把扩展名改成 ZIP 就能拆开看。单张表最多 1,048,576 行、16,384 列。它不能保存 VBA 宏,普通表格用这个就好。
XLSM 和 XLSX 基本同一套结构,区别是 XLSM 能保存 VBA。经常写宏、做自动化的人用它更省事。我自己日常保存一般选 XLSM,主要就是喜欢折腾 VBA。
XLSB 是二进制工作簿,也能保存宏。碰到公式多、体积大的文件,有时比 XLSM 小,打开保存也可能快一点,不过跨软件兼容性不一定好,具体得看文件。

四种常见工作簿格式的区别。
XLSX 数据也可以导入 SQL Server,不过要看数据库驱动、Access Database Engine 和 32/64 位环境。导入工具有时会猜错字段类型,超过 255 个字符的文本可能被截断,导入前最好先检查字段长度。
XLA、XLAM、XLL 是加载项。前两个主要用于 VBA 宏和自定义函数,XLA 是老格式,XLAM 是新版;XLL 则常用 C/C++ 写,适合做编译型扩展。常用函数做成加载项,打开别的工作簿也能用。

加载项增加功能,模板负责复用表格。
在 Excel 的“开发工具—Excel 加载项”里就能浏览、启用这些文件。网上下载的宏插件别随便打开权限,尤其不要为装插件直接把所有宏都设成启用。

Excel 加载项管理界面。
XLT、XLTX、XLTM 是模板:XLT 是老版,XLTX 是新版普通模板,XLTM 可以带 VBA。像固定格式的月报、报价单,保存成模板后,新建文件时在“个人”模板里选,省得每次重新排版。

保存模板后,可以直接基于模板新建工作簿。
DLL、EXE 形式的 COM 加载项一般要安装或注册,再到“COM 加载项”里管理,并不是扔进 XLSTART 就能使用。XLSTART 更多是给 Excel 启动时自动打开文件用的。
XML 常用来和业务系统交换数据。我之前就用 VBA 把 Excel 内容批量生成 XML,再导入软件系统,比一条条手工录方便。系统若能直接导 XLSX,当然更省事。SLK(SYLK)也是老数据交换格式,现在不多见。
CSV 说白了就是用分隔符存数据的文本文件,数据库导出经常碰到。它只有数据,没有 Excel 那些多工作表、格式和公式,也不受 104 万行这个文件层面的限制;但 Excel 工作表本身仍装不下超过上限的数据。
数据量大就用 Power Query 导入、清洗,再按需要装载到数据模型或工作表。PQ 用 M 语言,Power Pivot 里常用 DAX,Power BI 也沿用这套思路。只是再大的数据量,也得看电脑内存够不够。

CSV 导入时注意编码、分隔符和字段类型。
CSV 还要小心编号前面的 0、长数字和日期,双击打开可能被 Excel 自动改格式。用 Python 处理几十万行纯数据,我也倾向先转 CSV,读起来通常比 XLSX 快;但别把需要保留公式和样式的表也转没了。
TXT 跟 CSV 类似,可以用制表符等分隔;PDF 不用多说,XPS 是微软的固定版式文件;ODS 主要用来兼容其他办公软件;MHT、MHTML 则能把网页和部分资源存进一个文件。
二、WPS 的 VBA 插件
WPS 部分版本可以通过 VBA 组件运行宏,不过能不能用要看具体版本和授权,不是装个插件就一定行。我试过一些普通 VBA 代码,大多能运行,少数对象或函数还是有兼容问题,重要文件最好先复制一份测试。
三、批量格式转换
批量转换可以用 Office Tool Plus 等工具,也可以用 VBA。要是工具刚好能做,我一般懒得专门写代码,一个个另存为更没必要。

文件批量转换工具示例。
四、加密
老 XLS 的密码保护机制相对弱,新版 Office 文件的打开密码加密强得多。不过强不强最终还得看密码:简单生日、手机号照样容易被字典或 GPU 破解,长而随机的密码更可靠。工作表保护也别当成文件加密。
Excel 密码可以包含 Unicode 字符。我以前工作时碰到过冷僻字无法录入,就用函数翻过字符集,还看到过楔形文字。用的公式是:
=UNICHAR(SEQUENCE(1000000))
有些码位会报错,有些字体显示不出来,拿来研究字符倒挺有意思。要用作密码,还得先想想自己能不能正常输入和找回。

用 Excel 生成 Unicode 字符。
日常到底选哪个?普通表格选 XLSX,兼容性好,也方便发给别人;经常用 VBA 就选 XLSM,我自己也是这么存的。XLS 留给老系统,XLSB 可以在大文件上试试,CSV 留给数据交换。别的格式知道用途就行,没必要每次都折腾。















































































