1 votos

Estilo para tabla de word Python-docx

Estoy intentando generar un documento word con Python, para esto utilizo el módulo python-docx. Quiero establecer un estilo muy concreto para una tabla del documento word: 'Grid Table 5 Dark Accent 1'. Pero este estilo en concreto no se encuentra en la lista de estilos disponibles.

from docx import Document

document = Document()
table = document.add_table(rows=1, cols=3, style='GridTable5Dark-Accent1')

Da un error del siguiente tipo:

table = document.add_table(rows=1, cols=3, style='GridTable5Dark-Accent1')
File "/usr/local/lib/python3.5/dist-packages/docx/document.py", line 100, in add_table
table.style = style
File "/usr/local/lib/python3.5/dist-packages/docx/table.py", line 134, in style
style_or_name, WD_STYLE_TYPE.TABLE
File "/usr/local/lib/python3.5/dist-packages/docx/parts/document.py", line 76, in get_style_id
return self.styles.get_style_id(style_or_name, style_type)
File "/usr/local/lib/python3.5/dist-packages/docx/styles/styles.py", line 113, in get_style_id
return self._get_style_id_from_name(style_or_name, style_type)
File "/usr/local/lib/python3.5/dist-packages/docx/styles/styles.py", line 143, in _get_style_id_from_name
return self._get_style_id_from_style(self[style_name], style_type)
File "/usr/local/lib/python3.5/dist-packages/docx/styles/styles.py", line 57, in __getitem__
raise KeyError("no style with name '%s'" % key)
KeyError: "no style with name 'GridTable5Dark-Accent1'"

Tengo otro documento (generado a mano) donde sí que tengo el estilo que yo quiero, he pensado que con este doc con el estilo que yo quiero, es posible que pueda extraerlo y aplicarlo a mi propio documento. Pero no encuentro forma de hacerlo...

Supongo que algo tiene que ver con la documentación donde explica los estilos y como jugar con ellos pero no sé si no me entero o la documentación no es lo suficientemente clara, pero no consigo arreglarlo...

He intentado lo siguiente:

document = Document()
doctemplate = Document('SG.docx')

# Cogemos el estilo que yo quiero
styleIneed = doctemplate.styles['Grid Table 5 Dark Accent 1']
# Añadimos un estilo vacío
newstyle = document.styles.add_style('Grid Table 5 Dark-Accent 1', WD_STYLE_TYPE.TABLE)
# Especificamos qué debe llevar el estilo nuevo creado
newstyle.base_style = styleIneed
# Creo la tabla
table = document.add_table(rows=3, cols=3, style='GridTable5Dark-Accent1')

Pero no funciona, se crea la tabla pero sin ningún estilo... Alguien sabría cómo hacerlo o darme algunas pautas para ello?

Muchas gracias de antemano!!

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: