什么时候应该使用xlsm或xlsb格式?


106

由于Excel 2007中,微软已经分裂的经典.xls格式的多种格式(特别是.xlsx.xlsm.xlsb)。我毫无疑问地了解.xlsx格式的用途和目的,但是我仍然想知道在创建包含某些VBA的文件时是否应该使用.xlsm.xlsb格式。

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

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

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


3
xlsb通常小于xlsm
Charles Williams

一些有用的信息在这里-analyticscave.com/…–
克里斯(Chris

1
出于某种原因,使用.xlsb超过.XLSM解决我们与用户自定义函数对象模型创建幻像对象是有一些问题:superuser.com/questions/1005482/...
SuMau

Answers:


62

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

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


.xls文件为二进制格式。.xlsb文件在较新的Office版本中保留此二进制格式。以二进制格式存储数据既有大小差异,又有速度优势,尽管这些改进只会在非常大的文件中注明。
music2myear17年

90

.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不支持Ribbon代码的信息比上面的引用要新,但是我认为您的论坛消息来源是错误的。当打开二进制文件时,它似乎凝缩地模仿了OOXML文件结构1对1:2006-08-07的博客文章


2
仅一项试验,尽管没有ministat(1)结果:-\
好人

2
我确认带有自定义功能区的文件之一在xlsb中可以正常工作。
David G

5
@PatrickLepelletier .xlsx就像.xlsm,只有禁用了宏。两者都是基于XML的。与此相反,.xlsb是二进制。因此,您应该将问题读为“ {.xlsx / .xlsm}与.xlsb”。(二进制文件没有禁用宏的版本.xlsb。)
Aaron Thoma

4
如果xlsb更好,为什么xlsx是默认设置?xlsb一定有缺点吗?
PProteus

3
@PProteus,简单地将xlsb放在特定区域内更好。引入XML标准的整个想法是更加透明的,从而使文件更具可移植性,并使文件操作更容易。现在,第三方工具可以正确地读取/写入Excel文件(我知道,他们可以通过一些逆向工程来做到这一点,但这很容易出错)。另一方面,使用大型Excel文件实际上并不是Excel的主要用途,因此,对于更易于移植的折衷很少。此外,使用非宏文件可以在某种程度上提高安全性。作为比较,如果Assembler更好,为什么还要麻烦Java?
伊斯特

9

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


1
如果是这样,那么xlsm对我来说就是一个。自90年代中期以来,我一直被损坏的Excel文件所困扰。这几乎足以使我开始挖沟谋生。Office 2000是具有文件恢复功能的第一个版本。但是我不知道
riderBill 2015年

XLSX和XLSM文件扩展名比2007年前的Excel XLS文件扩展名稳定得多。
Felipe Costa Gualberto

8

仅出于后代目的,这是来自多个外部来源的有关Excel文件格式的文本。在此问题的其他答案中已提及其中一些,但未复制必要内容。

1. 2006年8月22日,道格·马哈格(Doug Mahugh)

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

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

本文还引用了有关BIN格式的文档,篇幅太长,无法在此处进行复制。

2.从2006年8月29日的MSDN存档中,反过来引用了有关XLSB格式的博客文章:

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

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


5

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

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

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

xlsb(二进制)为0.89s,xlsm格式(zip文件中的xml)中具有相同内容的1,3s。:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.