microsoft - qué es un archivo binario de excel
¿Cuándo deberían usarse los formatos xlsm o xlsb? (6)
El formato XLSB también está dedicado a las macros embebidas en un archivo de libro oculto ubicado en la carpeta de inicio de Excel (XLSTART).
Una prueba rápida y sucia con xlsm o xlsb en la carpeta XLSTART:
Measure-Command { $x = New-Object -com Excel.Application ;$x.Visible = $True ; $x.Quit() }
0,89s con un xlsb (binario) versus 1,3s con el mismo contenido en formato xlsm (xml en un archivo zip) ... :)
Desde Excel 2007, Microsoft ha dividido el formato clásico .xls
en varios formatos (en particular, .xlsx
, .xlsm
, .xlsb
). No tengo ningún problema para comprender el uso y el propósito del formato .xlsx
, pero todavía me pregunto si deberíamos usar un .xlsm
o .xlsb
al crear un archivo que contenga algún VBA.
Por supuesto, puede encontrar algunos temas en la web, por ejemplo:
- en el foro de respuestas de Microsoft
- en el blog de Microsoft que se señaló en el enlace anterior (sin embargo, he analizado hasta la décima página sin encontrar una referencia a
.xlsb
) - este tema de otro foro
Lo que he entendido de este último enlace es que .xlsm
es algún tipo de formato XML y, por lo tanto, es necesario para la pestaña de cinta personalizada.
Más allá de la diferencia conceptual entre el formato ( .xlsm
se basa en XML VS .xlsb
es un archivo binario ), ¿hay alguna diferencia práctica al usar cualquiera de este archivo (aparte de la personalización de la cinta)?
¿Alguna vez has visto una diferencia real al usar cualquiera de estos formatos?
Por alguna razón, el uso de .xlsb sobre .xlsm resolvió algunos problemas que teníamos con una función definida por el usuario que creaba objetos fantasmas en el modelo de objetos: https://superuser.com/questions/1005482/excel-creates-non-existent-worksheets-in-vba-project-explorer/1215336#1215336
Solo para la posteridad, aquí está el texto de varias fuentes externas con respecto a los formatos de archivo de Excel. Algunos de estos han sido mencionados en otras respuestas a esta pregunta, pero sin reproducir el contenido esencial.
1. De Doug Mahugh, 22 de agosto de 2006 :
... el nuevo formato binario XLSB. Al igual que Open XML, es un formato de archivo de fidelidad completa que puede almacenar todo lo que pueda crear en Excel, pero el formato XLSB está optimizado para el rendimiento de formas que no son posibles con un formato XML puro.
El formato XLSB (también denominado a veces BIFF12, como en "formato de archivo binario para Office 12") usa la misma Convención de Empaquetado Abierta utilizada por los formatos Open XML y XPS. Entonces, básicamente es un contenedor ZIP, y puedes abrirlo con cualquier herramienta ZIP para ver lo que hay adentro. Pero en lugar de partes .XML dentro del paquete, encontrará partes .BIN ...
Este artículo también se refiere a la documentación sobre el formato BIN , demasiado extenso para reproducirse aquí.
2. De MSDN Archive, 29 de agosto de 2006, que a su vez cita una publicación de blog que ya faltaba sobre el formato XLSB:
A pesar de que hemos trabajado mucho para asegurarnos de que nuestros formatos XML se abren rápida y eficientemente, este formato binario es aún más eficiente para que Excel lo abra y lo guarde, y puede llevar a algunas mejoras de rendimiento para libros que contienen una gran cantidad de datos, o que requerirían una gran cantidad de análisis XML durante el proceso de Abrir. (De hecho, hemos descubierto que el nuevo formato binario es más rápido que el antiguo formato XLS en muchos casos). Además, no hay una versión sin macros de este formato de archivo; todos los archivos XLSB pueden contener macros (VBA y XLM) . En todos los demás aspectos, es funcionalmente equivalente al formato de archivo XML anterior:
Tamaño de archivo: el tamaño del archivo de ambos formatos es aproximadamente el mismo, ya que ambos formatos se guardan en el disco utilizando la arquitectura de compresión zip: ambos formatos usan la misma estructura de empaquetamiento y ambos tienen las mismas estructuras de nivel de parte. Soporte de funciones: ambos formatos admiten exactamente el mismo conjunto de características. Runtime performance: una vez cargado en la memoria, el formato de archivo no tiene efecto en la aplicación / velocidad de cálculo. Convertidores: ambos formatos tendrán el mismo soporte de conversión.
Todos son similares en que son esencialmente archivos zip que contienen los componentes reales del archivo. Puede ver los contenidos simplemente reemplazando la extensión con .zip y abriéndolos. La diferencia con xlsb parece ser que los componentes no están basados en XML sino en un formato binario: supuestamente esto es beneficioso cuando se trabaja con archivos de gran tamaño. http://blogs.msdn.com/b/dmahugh/archive/2006/08/22/712835.aspx
Uno podría pensar que xlsb solo tiene ventajas sobre xlsm. El hecho de que xlsm esté basado en XML y xlsb sea binario es que cuando se produce una corrupción en el libro de trabajo, tiene mejores posibilidades de reparar un xlsm que un xlsb.
.xlsx
carga 4 veces más que .xlsb
y ahorra 2 veces más y tiene 1.5 veces más archivos. Probé esto en una hoja de trabajo generada con 10''000 filas * 1''000 columnas = 10''000''000 (10 ^ 7) celdas de cadenas sencillas =…+1
fórmulas:
╭──────────────╥────────┬────────╮
│ ║ .xlsx │ .xlsb │
╞══════════════╬════════╪════════╡
│ loading time ║ 165s │ 43s │
├──────────────╫────────┼────────┤
│ saving time ║ 115s │ 61s │
├──────────────╫────────┼────────┤
│ file size ║ 91 MB │ 65 MB │
╰──────────────╨────────┴────────╯
(Hardware: Core2Duo 2.3 GHz, 4 GB de RAM, 5.400 rpm SATA II HD; Windows 7, con carga algo pesada de otros procesos).
Además de esto, no debería haber diferencias. Más precisamente,
ambos formatos admiten exactamente el mismo conjunto de características
cita esta publicación del blog desde 2006-08-29 (lamentablemente la publicación del blog citado se ha eliminado). Así que tal vez la información de que .xlsb
no es compatible con el código de la cinta es más reciente que la cita superior, pero creo que la fuente del foro es simplemente incorrecta. Al abrir el archivo binario, parece imitar de forma condensada la estructura de archivos OOXML 1-a-1: article blog de 2006-08-07