Este artículo es la continuación de este otro, donde tratamos de los documentos de Word DOCX, porque ahora veremos que los archivos de extensión XLSX, las hojas de cálculo de Excel de toda la vida, tienen una estructura muy peculiar.
Si conoces esta estructura, tendrás un punto más diferenciador en tu trabajo como traductor.
¿Empezamos?
Un poco de historia de la extensión XLSX de Microsoft Excel
La extensión XLSX lleva con nosotros desde la versión 2007 de Microsoft Excel. Desde entonces, las versiones 2010, 2013 y 2016 llegaron para darnos todavía más funciones y más posibilidades en esta potente hoja de cálculo.
Como siempre, las versiones nuevas conllevan un problema para las que van quedando obsoletas, y es que, por ejemplo, con Excel 2003 no podrás abrir un documento de Excel 2016… a menos que te instales un paquete de compatibilidad de Microsoft Office. Si tienes una versión tan antigua de Excel como 2000, XP o 2003 harás bien en instalarte este paquete de Microsoft, que además es gratuito.
Antes de la aparición de la extensión XLSX, las hojas de cálculo tenían la extensión XLS, que eran archivos binarios. Como estarás a punto de leer, las hojas de cálculo XLSX más modernas tienen una estructura más visible, aunque está algo escondida.
Dentro de un archivo con extensión XLSX
Vamos a partir de una sencilla hoja de cálculo XLSX, creada con la versión 2010 de Excel. Te recomiendo que te la descargues para poder probar tú mismo lo que vamos a ir viendo en el resto del artículo.
Es una hoja de cálculo XLSX muy sencilla con solo 3 hojas:
- Una hoja IMÁGENES, con algo de texto con formato y 2 imágenes insertadas:
- Una hoja AÑOS, con una pequeña tabla y el gráfico correspondiente:
- Una hoja COMENTARIOS, con un par de comentarios insertados:
He tratado de incluir varios elementos para después poder mostrar dónde aparecen.
En Windows Explorer, abre la carpeta donde tienes este archivo de extensión XLSX (descárgatelo si aún no lo has hecho).
Atención ahora, que empieza lo bueno…
Sin salir de Windows Explorer, cambia la extensión XLSX a ZIP:
Nota: si no puedes ver la extensión .XLSX, deberás cambiar la configuración de Windows Explorer > cinta Vista > botón Opciones > ficha Ver > Configuración avanzada, y desmarcas la casilla Ocultar las extensiones para tipos de archivo conocidos:
¡Maravilla de las maravillas! Ahora puedes abrir el archivo ZIP desde Windows Explorer o desde otra herramienta de compresión.
Al descomprimirlo, verás toda una estructura de directorios:
Ya sabes el secreto: una hoja de cálculo de extensión XLSX no es más que un contenedor de archivos.
Puedes ver que dentro de las carpetas hay archivos con extensión XML.
XML es un estándar que se está volviendo cada vez más popular para guardar contenido, como el de muchas páginas web y, como ves, también del procesador de textos más usado del mundo. Un humano lee muy mal un archivo XML, porque hay multitud de etiquetas para definir estilos, formatos, etc. Un XML no está preparado para mostrar el contenido, solo para guardarlo.
Sin ver exhaustivamente todas las carpetas, sí que vamos a ver algunas de ellas, las que más nos pueden interesar en nuestro trabajo de traductores:
Carpeta docProps para ver la versión de Excel
Por ejemplo, en la carpeta docProps existe un archivo interesante, que es el app.xml.
Si abres este XML, verás muchas cosas:
No te marees, por favor… 🙂
Es un simple XML, con muchas etiquetas de apertura y de cierre, es verdad, pero solo quiero que te fijes en un par de cosas:
La primera, en el nombre de las tres hojas: IMÁGENES, AÑOS y COMENTARIOS.
La segunda, en la etiqueta AppVersion, que está al final del XML:
<AppVersion>14.0300</AppVersion>
Esta etiqueta indica la versión de Microsoft Excel que creó esta hoja de cálculo XLSX. En este caso, puedes ver que es la versión 14 («14.0300»), que se corresponde con Excel 2010.
Consulta la siguiente tabla de versiones de Excel hasta la fecha:
AppVersion | Versión |
12.0000 | Office 2007 |
14.0000 | Office 2010 |
15.0000 | Office 2013 |
16.0000 | Office 2016 |
En la versión he escrito «Office», en lugar de «Excel», porque esta tabla se corresponde también con el resto de aplicaciones de Office: Word, PowerPoint, Access…
Ahora ya sabes cómo consultar la versión de una hoja de Excel, incluso si no tienes Microsoft Excel instalado, ¿verdad?
Esto puede ser útil si tu cliente te envía un XLSX de la versión 2016 para traducir y tu herramienta de traducción asistida no puede procesarla. Si confirmas la versión consultando el XML de la carpeta docProps, podrás comentárselo al cliente y preguntarle si hay algún inconveniente en convertir la hoja de datos XLSX a una versión anterior que tu herramienta de traducción asistida sí puede procesar, como por ejemplo la 2013.
Carpeta xl para ver el contenido de la hoja de cálculo
Si en la carpeta xl abres sharedStrings.xml, verás que aquí están los textos de la hoja de cálculo. Es decir, aquí se guarda el contenido principal.
En la siguiente figura puedes comparar el contenido de este XML con 2 de las hojas:
Vamos a ver este XML un poco más a fondo, porque merece la pena:
Primero, localiza los textos celda primera y celda segunda. No están en el mismo orden en el XML que en la hoja de datos, más bien siguen el orden en el que se escribieron.
¿Ves el formato de color rojo de celda segunda?
Después, en el XML viene el texto Año, que aparece 3 veces en la hoja AÑOS. Lo ves, ¿verdad?
¿Te das cuenta de que solo aparece 1 vez en el XML? De ahí el nombre de este XML, sharedStrings.xml, ya que Excel, por motivos de rendimiento, guarda una copia de cada cadena distinta.
Evidentemente, en otro lugar de esta estructura de archivos XML se indica que esta cadena Año se repite varias veces en unas celdas concretas.
Por último, puedes ver las cadenas de texto Cantidad, Cantidades y Promedio.
Chulo, ¿verdad?
Los comentarios, también en la carpeta xl
Es posible que ahora te preguntes dónde están los comentarios de la 3.ª hoja (la llamamos COMENTARIOS).
La respuesta es que se guardan también en la carpeta xl, dentro de un XML que se llama comments1.xml:
Puedes ver los comentarios en el XML y ubicarlos en la hoja de cálculo, ¿verdad?
Como ves, aparte del texto de cada comentario, se guarda información del formato y de la celda donde está el comentario.
Si hubiera comentarios en otras hojas, Excel crearía un comments2.xml, un comments3.xml, y así sucesivamente; un XML por cada hoja con comentarios.
Nota importante: Las herramientas modernas de traducción asistida, como Trados Studio o memoQ, abren las hojas de cálculo XLSX en su propia interfaz de usuario. Lo que hacen en realidad es convertir la extensión XLSX a ZIP, abrir el ZIP en una carpeta temporal, buscar estos archivos sharedStrings.xml y comments1.xml en la carpeta xl y extraer el texto y formato mediante un filtro especial. Cuando creas el documento meta, estas herramientas insertan el contenido meta en los mismos XML, crean un ZIP con la estructura de directorios y cambian la extensión ZIP a XLSX para que puedas entregarlo traducido al cliente.
Piénsalo un segundo: Esto quiere decir, que es posible traducir hojas de cálculo XLSX con estas herramientas sin necesidad de tener Word instalado en tu PC. Tienes la demostración en el vídeo que hay al final del artículo.
Seguimos…
Gráficos en la carpeta xl/drawings
En la 2.ª hoja AÑOS también hay un pequeño gráfico, cuya configuración (color, posición, tipo de gráfico, etc.) se indica en la carpeta xl/drawings.
Te animo a que eches un vistazo a los XML de esta carpeta…
Carpeta xl/media para ver el contenido multimedia
Si abres la carpeta xl/media, encontrarás las dos imágenes insertadas en la hoja de cálculo de Excel:
Como ves, las imágenes están en el formato original (JPG y PNG, en este caso), lo cual nos da pie para la siguiente sección del artículo: ¿qué harías si tuvieras que traducir las imágenes?
Proceso de traducción de las imágenes
Esta carpeta xl/media con todas las imágenes puede serte muy útil si:
- la hoja de cálculo tiene muchas imágenes insertadas;
- y necesitas traducir estas imágenes.
En este caso, te recomiendo que tomes las imágenes desde esta carpeta, ya que este paso es mucho más rápido que copiar cada una desde Excel. Te volverías loco si tuvieras que copiar 100 imágenes y luego volverlas a insertar en la hoja de cálculo.
El procedimiento completo sería:
- Selecciona las imágenes con texto traducible de esta carpeta xl/media.
- Con alguna herramienta de OCR, extrae el texto de estas imágenes a un documento de texto. Es posible que necesites aplicar algún formato (negrita, etc.) a este documento.
- Traduce los textos de las imágenes.
- Con alguna herramienta de edición (como Paint de Microsoft, Gimp o PhotoShop), edita estas imágenes e inserta el texto traducido.
- Sin cambiar el nombre de archivo (image1, image2…), deja las imágenes traducidas en la misma carpeta xl/media.
- Crea un ZIP de nuevo y cambia la extensión de ZIP a XLSX:
¡Ya está!
Si ahora abres el documento recién creado de extensión XLSX verás que es igual al original, pero con las imágenes traducidas.
Chulo, ¿verdad?
Nota: si te lo estabas preguntando, uso la herramienta 7-Zip, de la que ya hemos hablado en otros artículos del blog.
Vídeo
En el siguiente vídeo de YouTube:
- te demuestro que una hoja de cálculo de Excel XLSX es en realidad un archivo ZIP;
- te demuestro que es posible modificar con un simple editor el texto de sharedStrings.xml o los comentarios de comments1.xml de la carpeta xl, volver a crear un ZIP con la misma estructura de archivos, cambiar la extensión ZIP a XLSX y abrir en Excel para confirmar que las modificaciones están implementadas. ¡A pesar de que el contenido se ha editado sin Excel!
Enlace al vídeo de YouTube: https://youtu.be/D5vQZu-_Uz8
Anexo: versiones 2007/2010/2013/2016
Es posible que con cada archivo de extensión XLSX, tras cambiarla a ZIP, obtengas una estructura de directorios diferente.
Por ejemplo, si no hay ningún gráfico en la hoja de cálculo, no habrá carpeta xl/drawings. Si no hay comentarios, tampoco habrá un archivo comments1.xml en la carpeta xl.
Supongo, y aquí no estoy seguro al cien por cien, que la estructura depende de la versión de XLSX, es decir si es de la versión de Excel 2016 o 2007, por ejemplo.
Si la anterior estructura correspondía a una hoja de cálculo de la versión 2010, aquí tienes la estructura de directorios de un XLSX de la versión 2016:
Que puedes comprobar que es algo diferente de la estructura de un documento XLSX 2010.
Conclusiones
En este artículo has podido ver bastantes cosas interesantes sobre los archivos XLSX de Excel:
- En realidad, un XLSX es un contenedor de archivos con formato ZIP, que conoces de toda la vida.
- Este ZIP contiene muchos XML, archivos de texto, con contenido y con muchas etiquetas.
- Hemos ubicado el XML con el contenido principal de la hoja de cálculo (sharedStrings.xml).
- Hemos visto que para las cadenas de texto duplicadas en la hoja de cálculo, Excel guarda una única copia.
- Hemos ubicado los XML con los comentarios (comments1.xml, comments2.xml…).
- También hemos ubicado la carpeta media donde se guardan las imágenes.
- Hemos demostrado que se puede modificar un archivo XLSX sin tener Excel instalado.
No nos hemos metido de lleno en el contenido de todo el ZIP, pero tenemos un par de aplicaciones que te pueden ser muy útiles:
- Si necesitas saber la versión de Excel que creó la hoja de cálculo.
- Si tienes que traducir las imágenes del XLSX.
Si recuerdas que un archivo de extensión XLSX es en realidad un contenedor ZIP, podrás sacarle provecho la próxima vez que lo necesites.
* * * * *
Ya vimos en este otro artículo, que los documentos DOCX (Microsoft Word) son también contenedores ZIP. Esta realidad «enmascarada» de los formatos más modernos de Excel y Word también se repite en Microsoft Visio, un software menos conocido, pero incluido en Office Professional.
Las ovejas negras de la familia de Microsoft Office son los documentos de Microsoft Publisher y las bases de datos de Access, que siguen siendo archivos binarios.
🙁
Es muy posible que en el futuro tratemos los archivos de Visio y qué tienen de especial que puedas aprovecharlo como traductor, pero antes tengo programado ver las herramientas de traducción asistida (como Studio y memoQ), ya que también adoptan la idea de empaquetar en ZIP con secretismo…
Nada más, solo un par de recomendaciones si te interesa leer más sobre Excel o si quieres estar al tanto de los nuevos artículos:
- Lee los otros artículos de Excel de este mismo blog. Los tienes todos si filtras por «Excel» en la nube de etiquetas (columna derecha del blog).
- Suscríbete al boletín del blog, o sígueme en LinkedIn o Twitter (@jssprt). De esta manera, serás el primero en enterarte de la publicación de los artículos.
Saludos, muy interesante artículo, hace día tuve problemas con algunos archivos de un cliente empresarial, dichos archivos de excel 2013 aunque no pesaban mas de 1500kb al abrirlos y tratar de revisarlos se ponían lentos, ocupando más de 1gb de RAM el proceso del excel, buscando en internet me indicaron el proceso que explicas de descomprimirlo como zip e ir a la carpeta xl y borrar la carpeta dranwing, haciendo esto se solucionó el problema, ahora mi consulta es, por qué el XML dentro de esta carpeta se creció tanto si los archivos no tenían gráficos? De antemano agradezco que respondan está inquietud.
Hola, Gerardo:
Los XML grandes, con mucha información, son propensos a dañarse. Puede pasar con cualquier archivo, una imagen, por ejemplo, pero si se dañara un JPG, quizás verías una manchita en la pantalla y ya está.
Pero si se daña una etiqueta de un XML, por ejemplo, que no se cierra, es posible que el programa, Excel en este caso, intente recuperar la información y no pueda por mucho que lo intente.
Esto suele pasar porque el ordenador se apaga mientras está guardando el documento. He sido testigo de algún caso…
A veces, cuando falta una etiqueta, un buen editor de XML puede ayudar a encontrar el problema, pero arreglar un XML dañado es complicado, porque es difícil ver la estructura, pero no es imposible.
A veces, Guardar como puede ayudar también, me refiero a dentro de Excel, nada más abrir el documento, si se deja…
Lo que me extraña es que pasara con varios documentos, pero quizás no dé la clave para encontrar el problema. Apostaría a que es un problema de versiones de Excel. Por curiosidad, si miras en el archivo app.xml de la carpeta docProps, podrás ver qué aplicación (Excel, LibreOffice) se usó y su versión. Creo que los tiros tienen que ir por aquí…
Lo que no sé explicar es porqué se solucionó el problema borrando las imágenes de la carpeta DRAWINGS. Quizás la parte dañada hacía referencia a las imágenes… Como digo, habría que hacer una labor detectivesca para saber qué pasó: autopsia al XML, preguntar a tu cliente si se le apagó o congeló su ordenador mientras guardaba, etc.
Sé que no te doy una contestación final a tu pregunta, solo ideas, pero quiero darte las gracias por tu mensaje, así tenemos otra aplicación más al hecho de que detrás de un XLSX hay un ZIP con una estructura.
¡Un abrazo muy fuerte desde España!
… Jesús Prieto …
HOLA TENGO UNA DUDA QUE SIGNIFICA LA EXTENCION .XLSX EN ESPECIAL LA ULTIMA X
Hola, Carolina:
Supongo que la equis final de las últimas extensiones de archivo de Microsoft Office, como XLSX (Excel) y DOCX (Word), se refiere a que son formatos basados en XML.
Como puedes ver en este artículo, un XLSX en en realidad un contenedor ZIP con muchos archivos en su interior, siendo algunos de ellos archivos XML con el contenido de la hoja de datos.
Lo mismo se aplica a los documentos DOCX (https://www.gonduana.com/lo-que-la-extension-docx-esconde/)
Saludos,
… Jesús Prieto …
Hola,
Quisiera saber si mediante los archivos xml contenidos dentro del archivo xlsx, es posible construir una macro que me inserte una imagen en el encabezado o en el pie de página desde este mismo archivo?
Interesante y didáctico su página, Falicitaciones.
Deseo realizar una consulta, al entrar a la carpeta xl, y abrir xml, y realizar la búsqueda con , ¿Existirá alguna manera de conocer la clave con que se realizó la protección?.
Gracias por su gentil atención.
Ing° Civil Lucio Burga
Hola, Lucio:
No lo sé a ciencia cierta, pero me imagino que no. Si fuera posible, sería una birria de protección por contraseña…
De todas formas, si llegas a algo, no dudes en dejarnos tus descubrimientos.
Saludos.
… Jesús Prieto …
Disculpe la búsqueda es con SheetProtection
Hola Jesús:
Al hilo del comentario de Gerardo, del 10/12/2016, me he encontrado con que, de la noche a la mañana, centenar y medio de Hojas de Cálculo con extensiones .xls y xlsx, que habían pasado por Office 2003, 2007, 2013 y 2016 y OS WXP, W7 y, ahora, W10 han quedado ilegibles para Excel 2016, con los avisos de que el formato o la extensión o bien "no son válidos" o "no coinciden" o también "hay problemas para leer el contenido", etc. Sólo se han salvado las que apenas tenían información y cuando he "dejado" a Excel que tratara de recuperar lo que pudiera, las ha dejado en blanco. Ahora las abre pero no hay nada dentro.
Es patente que no he sido yo quien ha cambiado el formato de los archivos, y las extensiones no han variado; por lo tanto ¿quién o qué ha cambiado el formato de todos esos archivos y además simultáneamente?
Excel funciona bien porque ha abierto todos los archivos que tengo en otro disco duro y que son copias, algo antiguas. Veo que Microsoft arrastra ese problema años y sólo te ofrecen "quizás".
Hola, Juan Antonio:
Siento el problema. Si encuentras la solución o la respuesta, no dudes en volver por aquí y compartirla.
En los dos casos, el tuyo y el de Gerardo, lo que me extraña es que Excel deje de poder abrir un montón de hojas de cálculo a la vez.
Recomiendo a todo el mundo hacer copias de seguridad de los archivos que no puedes perder con la periodicidad necesaria.
Un saludo,
… Jesús Prieto …
Muy buen artículo.
Hola, muy buena pagina, quisiera hacer una consulta ya que tengo un caso muy extraño.
respalde de mi empresa una particion donde teniamos todos nuestros documentos en excel pero al volver a activar la particion algunos excel (no todos) al abrirlos marcan que el contenido no se puede leer y que intentara recuperarlo una vez que le doy si dice :
Parte quitada: /xl/sharedStrings.xml parte con error de XML. (Cadenas) Se esperaba '>'. Línea 2, columna 994034.
Parte reemplazada: /xl/worksheets/sheet1.xml parte con error de XML. Se esperaba espacio en blanco. Línea 2, columna 2487275.
lei que lo renombrara a zip para revisar el sharedStrings.xml que es donde estan los datos, lo revise con notepad ++, pero me di cuenta que en la estructura de xml en lugar de aparecer como :
dato1
dato2
me aparecia
<si dato1</sidato2si datodato3t>/>
y todo el XML que forma la estructura esta mal ordenado, mi duda es como ocurrio esto y a que se debe, ya que los servidores tienen antivirus y todas las pc son excel 2016.
de antemano agradezco su atencion, saludos.
en donde dice dato1 y dato2 es la estructura de xml
dato1
Hola !,
Muy buen post , sabrás como sabe que texto va en qué celda ?
Gracias !
Hola, Willy:
No lo sé a ciencia cierta, pero creo que es cuestión de estos dos XML:
xl\sharedStrings.xml
xl\worksheets\sheet1.xml
En el primero se van guardando los valores de las celdas según se van editando en Excel (orden temporal).
En el segundo XML se lleva la cuenta de la celda. editada.
Los nombres de las hojas del libro de Excel los tienes en docProps\app.xml
Como digo, no estoy nada seguro de esto. Si quieres necesitas más información, algo que no puedas analizar fácilmente a la vista de los XML, te recomiendo que consultes las especificaciones del estándar.
Un abrazo,
… Jesús Prieto …
TENGO UNLIBRO XLSX PERO ESTA PROTEGIDO EL LIBRO EXISTE ALGUNA FORMA DE EDITARLO COMO EN EL ARTICULO DE ARRIBA O ALGUNA FORMA DE DESPROTEGERLO. YO HICE SIN PROBLEMA CON OTROS ARCHIVOS, EXTE NO ME DEJA
Hola, Daniel:
No dices cómo desprotegiste otros libros de Excel, pero prueba a quitar las mayúsculas… Otra cosa no te puedo decir, lo siento.
¡Suerte!
… Jesús Prieto …