110

自 Excel 2007 以来,Microsoft 已将经典.xls格式拆分为多种格式(特别是 、.xlsx.xlsm.xlsb。我理解.xlsx格式的用途和目的没有问题,但我仍然想知道在创建包含一些 VBA 的文件时是否应该使用 a.xlsm或格式。.xlsb

当然,您可以在网上找到一些主题,例如:

我从最后一个链接中了解到.xlsm的是某种 XML 格式,因此是自定义功能区选项卡所需要的。

除了格式之间的概念差异(.xlsm基于XML VS.xlsb二进制文件)之外,在使用任何此文件时(除了功能区自定义)是否有任何实际差异?
在使用这些格式时,您有没有看到任何真正的区别?

4

5 回答 5

95

.xlsx加载时间长 4 倍.xlsb,保存时间长 2 倍,文件大 1.5 倍。我在生成的工作表上对此进行了测试,该工作表具有 10'000 行 * 1'000 列 = 10'000'000 (10^7) 个简单链式=…+1公式的单元格:

╭──────────────╥────────┬────────╮
│              ║ .xlsx  │ .xlsb  │
╞══════════════╬════════╪════════╡
│ loading time ║ 165s   │  43s   │
├──────────────╫────────┼────────┤
│ saving time  ║ 115s   │  61s   │
├──────────────╫────────┼────────┤
│ file size    ║  91 MB │  65 MB │
╰──────────────╨────────┴────────╯

(硬件:Core2Duo 2.3 GHz、4 GB RAM、5.400 rpm SATA II HD;Windows 7,其他进程的负载有些重。)

除此之外,应该没有区别。更确切地说,

两种格式都支持完全相同的功能集

引用了2006-08-29的这篇博文。所以也许.xlsb不支持功能区代码的信息比上引用更新,但我认为你的论坛来源是错误的。破解打开二进制文件时,似乎1对1简洁地模仿OOXML文件结构:2006-08-07的博客文章

于 2012-03-10T01:13:26.300 回答
62

它们的相似之处在于它们本质上是包含实际文件组件的 zip 文件。您只需将扩展名替换为 .zip 并打开即可查看内容。与 xlsb 的区别似乎是组件不是基于 XML 的,而是二进制格式:据说这在处理大文件时很有用。

https://blogs.msdn.microsoft.com/dmahugh/2006/08/22/new-binary-file-format-for-spreadsheets/

于 2011-10-19T15:03:47.207 回答
10

人们可能会认为 xlsb 仅比 xlsm 具有优势。xlsm 基于 XML 而 xlsb 是二进制的事实是,当工作簿损坏时,修复 xlsm 比修复 xlsb 的机会更大。

于 2015-11-29T16:40:51.963 回答
8

只是为了后代,这里是来自几个外部来源的关于 Excel 文件格式的文本。其中一些已在此问题的其他答案中提到,但未复制基本内容。

1. 来自Doug Mahugh,2006 年 8 月 22 日

...新的 XLSB 二进制格式。与 Open XML 一样,它是一种全保真文件格式,可以存储您可以在 Excel 中创建的任何内容,但 XLSB 格式针对性能进行了优化,这是纯 XML 格式无法实现的。

XLSB 格式(有时也称为 BIFF12,如“Office 12 的二进制文件格式”)使用与 Open XML 格式和 XPS 相同的开放打包约定。所以它基本上是一个 ZIP 容器,你可以用任何 ZIP 工具打开它,看看里面有什么。但是,您会找到 .BIN 部分,而不是包中的 .XML 部分...

这篇文章还参考了有关 BIN 格式的文档,因为篇幅太长,无法在此处复制。

2. 来自MSDN 档案,2006 年 8 月 29 日,该档案又引用了一篇关于 XLSB 格式的已经缺失的博客文章:

尽管我们已经做了大量工作来确保我们的 XML 格式能够快速有效地打开,但这种二进制格式对于 Excel 的打开和保存效率仍然更高,并且可以为包含大量数据的工作簿带来一些性能改进数据,或者在打开过程中需要大量的 XML 解析。(事实上​​,我们发现新的二进制格式在很多情况下都比旧的 XLS 格式更快。)此外,这种文件格式没有无宏版本——所有 XLSB 文件都可以包含宏(VBA 和 XLM) . 在所有其他方面,它在功能上等同于上述 XML 文件格式:

文件大小——两种格式的文件大小大致相同,因为两种格式都使用 zip 压缩保存到磁盘架构——两种格式使用相同的打包结构,并且都具有相同的部件级结构。功能支持——两种格式都支持完全相同的功能集运行时性能——一旦加载到内存中,文件格式对应用程序/计算速度没有影响转换器——两种格式将具有相同的转换器支持

于 2017-04-03T18:32:07.700 回答
6

XLSB 格式也专用于嵌入在位于 excel 启动文件夹 (XLSTART) 中的隐藏工作簿文件中的宏。

在 XLSTART 文件夹中使用 xlsm 或 xlsb 进行快速而肮脏的测试:

Measure-Command { $x = New-Object -com Excel.Application ;$x.Visible = $True ; $x.Quit() }

xlsb(二进制)的 0,89s 与 xlsm 格式的相同内容的 1,3s(zip 文件中的 xml)... :)

于 2015-01-26T17:31:30.120 回答