¿Cuándo se deben utilizar los formatos xlsm o xlsb?

106

Desde Excel 2007, Microsoft ha dividido a la clásica .xlsformato a varios formatos (en particular, .xlsx, .xlsm, .xlsb). No tengo ningún problema para comprender el uso y el propósito del .xlsxformato, pero todavía me pregunto si deberíamos usar .xlsmun .xlsbformato o uno al crear un archivo que contenga algo de VBA.

Por supuesto, puede encontrar algunos temas en la web, por ejemplo:

Lo que he entendido de este último enlace es que .xlsmes 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 ( .xlsmse basa en XML VS .xlsbes un archivo binario ), ¿hay alguna diferencia práctica al usar cualquiera de estos archivos (aparte de la personalización de la cinta)?
¿Alguna vez ha visto alguna diferencia real al utilizar alguno de estos formatos?

JMax
fuente
3
xlsb suele ser más pequeño que xlsm
Charles Williams
Alguna información útil aquí - analystcave.com/…
Chris
1
Por alguna razón, el uso de .xlsb sobre .xlsm resuelto algunos problemas que teníamos con una función definida por el usuario crear objetos de trazos en el modelo de objetos: superuser.com/questions/1005482/...
SuMau

Respuestas:

62

Todos son similares en el sentido de que son esencialmente archivos zip que contienen los componentes reales del archivo. Puede ver el contenido 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 formato binario: supuestamente esto es beneficioso cuando se trabaja con archivos grandes.

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

Tim Williams
fuente
Los archivos .xls tenían formato binario. Los archivos .xlsb conservan este formato binario para las versiones de Office más recientes. Existe una diferencia de tamaño y un beneficio de velocidad al almacenar los datos en formato binario, aunque las mejoras solo se notarán en archivos MUY grandes.
music2myear
90

.xlsxcarga 4 veces más que .xlsby guarda 2 veces más y tiene 1,5 veces un archivo más grande. Probé esto en una hoja de trabajo generada con 10'000 filas * 1'000 columnas = 10'000'000 (10 ^ 7) celdas de =…+1fórmulas encadenadas simples :

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

(Hardware: Core2Duo 2.3 GHz, 4 GB RAM, 5.400 rpm SATA II HD; Windows 7, bajo una carga algo pesada de otros procesos).

Aparte de esto, no debería haber diferencias. Más precisamente,

ambos formatos admiten exactamente el mismo conjunto de funciones

cita este blog después de 2006-08-29. Entonces, tal vez la información que .xlsbno admite el código Ribbon es más nueva que la cita superior, pero creo que la fuente del foro tuya es simplemente incorrecta. Al abrir el archivo binario, parece imitar de forma condensada la estructura del archivo OOXML 1 a 1: artículo de blog de 2006-08-07

Aaron Thoma
fuente
2
Sin embargo, solo una prueba, sin resultados de ministat (1): - \
Good Person
2
Confirmo que uno de mis archivos con una cinta personalizada funciona bien en xlsb.
David G
5
@PatrickLepelletier .xlsxes como .xlsm, solo con macros deshabilitadas. Ambos están basados ​​en XML. En contraste con eso, .xlsbes binario. Por lo tanto, debería leer la pregunta como "{.xlsx / .xlsm} versus .xlsb". (No hay una versión macrodeshabilitada del binario .xlsb.)
Aaron Thoma
4
Si xlsb es mejor, ¿por qué xlsx es el predeterminado? ¿Debe haber alguna desventaja para xlsb?
PProteus
3
@PProteus, simplemente ponga xlsb es mejor en un área específica. La idea de introducir el estándar XML era ser más transparente, hacer que los archivos fueran más portátiles y facilitar la manipulación de archivos. Ahora las herramientas de terceros pueden leer / escribir correctamente archivos de Excel (lo sé, podrían hacerlo con ingeniería inversa, pero eso era propenso a errores). Por otro lado, el uso de archivos grandes de Excel no es realmente un uso principal de Excel, por lo que la compensación por ser más portátil es pequeña. Además, el uso de un archivo que no sea macro aumenta la seguridad hasta cierto punto. Como comparación, ¿por qué molestarse con Java si Assembler es mejor?
Ister
9

Se 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 daña el libro de trabajo, tiene más posibilidades de reparar un xlsm que un xlsb.

Felipe Costa Gualberto
fuente
1
Si eso es cierto, entonces el xlsm es el indicado para mí. Me han maldecido con archivos de Excel corruptos desde mediados de los 90. Fue casi suficiente para hacerme dedicarme a la excavación de zanjas para vivir. Office 2000 fue la primera versión con la función de recuperación de archivos. Pero no lo hago
riderBill
Las extensiones de archivo XLSX y XLSM son mucho, mucho más estables que la extensión de archivo XLS de Excel anterior a 2007.
Felipe Costa Gualberto
8

Solo para la posteridad, aquí está el texto de varias fuentes externas sobre los formatos de archivo de Excel. Algunos de ellos se han mencionado 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 total que puede almacenar cualquier cosa 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") utiliza la misma convención de empaquetado abierto que utilizan los formatos Open XML y XPS. Entonces, es básicamente un contenedor ZIP, y puede abrirlo con cualquier herramienta ZIP para ver qué hay dentro. Pero en lugar de partes .XML dentro del paquete, encontrará partes .BIN ...

Este artículo también hace referencia a la documentación sobre el formato BIN , demasiado extenso para reproducirlo 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:

Aunque hemos trabajado mucho para asegurarnos de que nuestros formatos XML se abran rápida y eficientemente, este formato binario es aún más eficiente para que Excel lo abra y guarde, y puede generar algunas mejoras de rendimiento para libros de trabajo que contienen una gran cantidad de datos, o que requerirían mucho análisis XML durante el proceso Open. (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 existe 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 de archivo de ambos formatos es aproximadamente el mismo, ya que ambos formatos se guardan en el disco mediante compresión zip Arquitectura: ambos formatos usan la misma estructura de empaquetado y ambos tienen las mismas estructuras de nivel de parte. Compatibilidad con funciones: ambos formatos admiten exactamente el mismo conjunto de funciones Rendimiento en tiempo de ejecución: una vez cargado en la memoria, el formato de archivo no tiene ningún efecto en la velocidad de aplicación / cálculo Convertidores: ambos formatos tendrán la misma compatibilidad con el convertidor

UuDdLrLrSs
fuente
5

El formato XLSB también está dedicado a las macros incrustadas en un archivo de libro oculto ubicado en la carpeta de inicio de Excel (XLSTART).

Una prueba rápida y sucia con un 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) ... :)

Alexis-Emmanuel Haeringer
fuente