Programacion Interactiva

Descubre una Nueva y Poderosa Herramienta.

FrameWork de Nueva Generacion

Acceso a tu Informacion desde cualquier Dispositivo con Navegador.

Enfoque en el Backend

Frontend de forma facil con Odoo y XML.

Creacion de Verticales

Creacion de nuevas Verticales Conquistando nuevos Mercados.

Tu marca aqui mismo

Llega a miles de personas.

Publicidad

Mostrando las entradas con la etiqueta python doc. Mostrar todas las entradas
Mostrando las entradas con la etiqueta python doc. Mostrar todas las entradas

martes, 27 de marzo de 2018

Reportes Word en Odoo


Generación de reportes en formato Doc/Docx integrado a Odoo




Mas de uno de nosotros hemos tenido la curiosidad o necesidad de Generar reportes en formato Doc(x),  esto es posible gracias a Python y a la gran cantidad de librerias que se crean y existen, en este Post les enseƱare un par de librerias que nos ayudan a generar este tipo de Reportes.


Instalación

Haremos uso de la libreria python-docx alojada en los Repositorios de Python, para ello podemos utilizar la aplicación Pip en Linux o easy_install.

sudo pip install python-docx
o
sudo easy_install install python-docx


Implementación

El primer paso que debemos realizar como cualquier libreria es importarla en nuestra Clase Odoo.

from docx import Document

Creamos una instancia de la libreria y la asignamos a una variable para poder generar nuestro Documento.

report_word = Document()

A partir de nuestra variable instanciada, podemos ir añadiendo información tomada de nuestro recordset o bien para ejemplos, podemos usar información ficticia.

Algunos ejemplos de lo que podemos hacer con la  libreria son:

Agregar un Parrafo


report_word = Document()

paragraph  = report_word.add_paragraph('Hola, este es mi primer parrafo con la libreria docx')


Agregar una cabecera


report_word = Document()

report_word.add_heading('Dream big and start with something small')

Agregar una tabla

report_word = Document()

report_word.add_table(rows=2, cols=2)

Un ejemplo completo seria:

from docx import Document
from docx.shared import Inches

document = Document()

document.add_heading('Document Title', 0)

p = document.add_paragraph('A plain paragraph having some ')
p.add_run('bold').bold = True
p.add_run(' and some ')
p.add_run('italic.').italic = True

document.add_heading('Heading, level 1', level=1)
document.add_paragraph('Intense quote', style='IntenseQuote')

document.add_paragraph(
    'first item in unordered list', style='ListBullet'
)
document.add_paragraph(
    'first item in ordered list', style='ListNumber'
)

document.add_picture('monty-truth.png', width=Inches(1.25))

table = document.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Qty'
hdr_cells[1].text = 'Id'
hdr_cells[2].text = 'Desc'
for item in recordset:
    row_cells = table.add_row().cells
    row_cells[0].text = str(item.qty)
    row_cells[1].text = str(item.id)
    row_cells[2].text = item.desc

document.add_page_break()

document.save('demo.docx')

Si quieren conocer mas acerca de la libreria:

https://python-docx.readthedocs.io/en/latest/