Excel 表示文件格式与扩展名不匹配
2023/8/8

Excel 表示文件格式与扩展名不匹配

一半的报告工具导出的 .xls 文件根本不是 Excel 文件。如何辨别实际得到的文件,以及每种冒名顶替者的代价。

系统给你发送了 report.xls,你双击打开,Excel 弹出警告: 文件格式和扩展名 'report.xls' 不匹配。 仍然打开的话,它要么正常工作,要么在屏幕上显示标记。将其上传到 Excel 查看器 替代——它读取文件的实际类型,而不是文件名。XLS、XLSX、CSV、ODS 以及宏、二进制和模板变体, 最大 20 MB,关闭标签页后即被删除。

在线 XLS XLSX 文档 Excel 查看器
在线 XLS XLSX 文档 Excel 查看器

扩展名是声明,而非事实

没有任何限制阻止程序随意写入字节并将结果命名为 .xls,而且大量程序确实如此。报告工具、ERP、银行门户和管理面板都提供“导出为 Excel”,实现该功能的最简方式是输出其他格式并给它 Excel 扩展名,因为 Excel 通常会打开它。

自 Excel 2007 起,文件在打开前会进行检查,这就是警告出现的原因。这并不是损坏信息,而是 Excel 告诉你文件名不正确。

找出你实际拥有的文件类型

在文本编辑器中打开文件——记事本即可——并查看第一行。以下五种情况几乎涵盖了所有文件。

  • <html, <head> 或 <table — 带有电子表格名称的 HTML 表格。浏览器和网页报告经常生成此类文件。
  • <?xml — SpreadsheetML,Excel 2003 使用的 XML 工作簿格式。
  • PK — ZIP 压缩包,即带有错误扩展名的真实 XLSX(或 ODS、DOCX)。
  • 以字节 D0 CF 11 E0 开头的不可读二进制 — 真实的 2007 之前的 XLS。它正是它所声称的那样。
  • 普通可读文本,值之间用逗号、分号或制表符分隔 — 分隔文本文件,即冒充他人名称的 CSV。

每种冒名顶替者的代价

了解这些的意义在于它们各自会失去不同的内容。

HTML 表格 仅包含数值和部分格式,完全没有公式。导出系统已经计算出结果并写入答案。没有底层数据可供重新计算,且在传输过程中没有任何内容丢失——因为根本没有写入公式。

SpreadsheetML 保留公式和单元格格式。但它无法包含图表和数据透视表;该格式没有存储这些的方式,因此它们在文件写入时就被丢弃,而不是在打开时。

错误命名的 XLSX 不会失去任何内容。它是完整的现代工作簿,唯一错误的只有文件名的六个字符。

分隔文本文件 仅包含数值,别无其他:没有公式、没有格式、没有第二张工作表。如果它看起来像一列带逗号的文本,则分隔符不是你的 Excel 所期望的那种。

一次性修复方法

对于任何需要保留的文件,先在 Excel 中忽略警告打开,然后选择 文件 → 另存为 → Excel 工作簿(.xlsx)。这样你就拥有了真实的工作簿,警告也彻底消失。

对于错误命名的 XLSX,只需重命名即可。重命名并不是转换,几乎从不奏效——但这是唯一例外,因为内容本身已经是正确的。

那些并非冒名顶替者的文件

.xlsb 看起来可疑,但其实不是。它是真正的 Excel 工作簿,以二进制而非压缩 XML 存储:数据相同,却明显更小,在大型模型上打开更快。如果同事发送给你这种文件,完全没有问题。

无论文件实际是什么,Excel 查看器 都能打开并显示工作表。