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

JMa*_*Max 100 excel excel-2007 xlsm xlsb

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

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

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

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

Aar*_*oma 85

.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 ?
??????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

(硬件: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的博客文章

  • @PatrickLepelletier` .xlsx`就像`.xlsm`,只有宏被禁用.两者都是基于XML的.与此相反,`.xlsb`是二进制的.因此,您应该将问题读作"{.xlsx/.xlsm}与.xlsb".(二进制文件`.xlsb`没有宏禁用版本.) (5认同)
  • 如果xlsb更好,为什么xlsx是默认值?xlsb必定有一些缺点吗? (3认同)
  • @PProteus,简单地说xlsb在特定区域更好.引入XML标准的整个想法是更加透明,使文件更便携,文件操作更容易.现在,第三方工具可以正确读取/写入Excel文件(我知道,他们可以通过一些逆向工程来实现,但这很容易出错).另一方面,使用大型Excel文件实际上并不是Excel的主要用途,因此更加便携的折衷很少.另外,使用非宏文件可以在某种程度上提高安全性.作为比较,如果Assembler更好,为什么还要使用Java呢? (3认同)
  • 只有一次试验,没有ministat(1)结果虽然: - (2认同)
  • 我确认我的一个带有自定义功能区的文件在xlsb中工作得很好. (2认同)

Tim*_*ams 60

它们都很相似,因为它们本质上是包含实际文件组件的zip文件.您可以通过用.zip替换扩展名并打开它们来查看内容.与xlsb的区别似乎是组件不是基于XML的,而是二进制格式:据说这在处理大文件时很有用. http://blogs.msdn.com/b/dmahugh/archive/2006/08/22/712835.aspx


Fel*_*rto 9

有人会认为xlsb只比xlsm有优势.xlsm是基于XML的,而xlsb是二进制的这一事实是,当工作簿损坏发生时,你有更好的机会修复xlsm而不是xlsb.


Dav*_*Caz 7

仅出于后代目的,这是来自多个外部来源的有关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压缩体系结构保存到磁盘的–两种格式都使用相同的打包结构,并且具有相同的部件级结构。功能支持-两种格式都支持完全相同的功能集运行时性能-加载到内存后,文件格式对应用程序/计算速度没有影响转换器-两种格式将具有相同的转换器支持


Ale*_*ger 5

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

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

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

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