Python - REPORTES EN PYTHON

   
Vista:

REPORTES EN PYTHON

Publicado por Roberto Matarrita rmatarria@gmail.com (105 intervenciones) el 08/11/2017 17:54:09
Buenos días tengan todos los miembros de este grupo de Python.

Ya llevo como tres meses de aprender el lenguaje, excelente por todo lo que se puede hacer. De tener paciencia, si, porque hay que hacer muchas instalaciones cuando algo no funciona. He revisado la web, tengo una gran cantidad de material, manuales, libros, videos, estoy en grupos de trabajo para consultas.

Hay algo que me asombra mucho y quizás me equivoco, como un lenguaje tan potente a nivel mundial, que cada día a día hay más gente trabajando con el, no cuente con un reporteador, como muchos lenguajes.

Me ha sido tan , pero tan difícil de hacer un reporte, he buscado, buscado y buscado y nadie me ha podido ayudar en mi necesidad de hacer un reporte. Me hablan de reportlab, pandas, Geraldo, , Limereport, QtRPT y otra serie de herramientas. Todas las he visto y tratado de probar, algunas gráficas para hacer un reporte, pero no te dicen como pegarlo a Python, incluso conseguí un ejemplo con Cristal Report, excelente, pero no corría para 64 bits, al parecer.

ReportLab, se ve bueno, pero todo es a pie, o sea el tiempo de desarrollo se alarga, además no he podido encontrar un ejemplo hecho a la realidad. Un ejemplo de como accesar una base de datos y mostrar la información. Incluso como poder mostrar estados financieros, una orden de compra, un reporte con cortes de control por vendedor.

Mi pregunta es y perdonen grupo si soy tan insistente, pero estoy a punto de tomar otra decisión con otro lenguaje y eso atrasaría mi proyecto. El tendón de Aquiles han sido los reportes. No quiero dejar este excelente lenguaje, fácil de programar, rápido el aprendizaje. Pero como hacen los programadores actuales, las empresas actuales para presentar los reportes, más aún como hacen para imprimir una factura, en una impresora de matriz de puntos y en una impresora punto de venta.

Se que los reportes por lo general los tiran a un PDF y de ahí a la impresora, esta bien, pero como se hacen. Mi proyecto no es web, es de escritorio

Por favor suplico, imploro, alguien que me ayude, pero no me salgan con el cuento, Roberto ve este enlace te puede servir, Roberto es que python no tiene un reporteador, se hace por terceros, que importa, pero deme un ejemplo, como hacen ustedes queridos miembros del grupo para presentar sus reportes. Disculpen la majadería, cuando aprenda esto de seguro voy hacer una publicación.

Gracias y espero me comprendan.

Roberto
Costa Rica.
rmatarria@gmail.com
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

REPORTES EN PYTHON

Publicado por Andrés (24 intervenciones) el 08/11/2017 22:56:43
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

REPORTES EN PYTHON

Publicado por Roberto Matarrita rmatarria@gmail.com (105 intervenciones) el 08/11/2017 23:36:06
Gracias Andrés por la ayuda, pero volvemos a lo mismo, no me sirve, no hay ejemplos concretos, de acceso a la base de datos y generar el reporte.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

REPORTES EN PYTHON

Publicado por Andrés (24 intervenciones) el 10/11/2017 01:51:22
Crea el repote normal en jasper studio, instala pyjasper, y sigue los ejemplos: https://github.com/jadsonbr/pyreport

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import os
from platform import python_version
from pyjasper.jasperpy import JasperPy
 
def advanced_example_using_database():
    input_file = os.path.dirname(os.path.abspath(__file__)) + \
                 '/examples/sample.jrxml'
    output = os.path.dirname(os.path.abspath(__file__)) + '/output/examples/'
    print(input_file)
    print(output)
 
    con = {
        'driver': 'mysql',
        'username': 'root',
        'password': 'manager',
        'host': '127.0.0.1',
        'database': 'sakila',
        'port':'3306'
    }
    jasper = JasperPy()
    jasper.process(
        input_file,
        output_file=output,
        format_list=["pdf"],
        db_connection=con
    )
 
advanced_example_using_database()

Al final lo que ejecuta es esto:

/usr/local/lib/python2.7/dist-packages/pyjasper/jasperstarter/bin/jasperstarter process "/home/andreas/pyjasper/test/examples/sample.jrxml" -o "/home/andreas/pyjasper/test/output/examples/" -f pdf -t mysql -u root -p manager -H 127.0.0.1 --db-port 3306 -n sakila

Las opciones de jasper starter estan en la linea de comandos:

usage: jasperstarter process [-h] -f <fmt> [<fmt> ...] [-o <output>] [-w]
[-a [<filter>]] [-P <param> [<param> ...]]
[-r [<resource>]] [-t <dstype>] -H <dbhost>
-u <dbuser> [-p <dbpasswd>] -n <dbname>
[--db-sid <sid>] [--db-port <port>]
[--db-driver <name>] [--db-url <jdbcUrl>]
[--jdbc-dir <dir>] [--data-file <file>]
[--csv-first-row] [--csv-columns <list>]
[--csv-record-del <delimiter>]
[--csv-field-del <delimiter>]
[--csv-charset <charset>] [--xml-xpath <xpath>]
[--json-query <jsonquery>] [-N <printername>] [-d]
[-s <reportname>] [-c <copies>]
[--out-field-del <delimiter>]
[--out-charset <charset>] <input>

Así que igual lo puedes usar sin el pyjasper, solo necesitas los jrxml

Screenshot-from-2017-11-09-18-57-54
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

REPORTES EN PYTHON

Publicado por Roberto Matarrita rmatarria@gmail.com (105 intervenciones) el 10/11/2017 04:17:26
Buenas noches Andrés.
Si realmente esto que me estas enviando me funciona para mi aplicación de escritorio, me estás solucionando un problema que tengo, días, horas de búsqueda en el internet de como conectar una aplicación de escritorio, con una forma hecha en pyqt5 y poder pegarla aun reporteador.

Voy a estudiar este código y tratar de que funcione, de ser así se lo voy a estar comunicando y sinceramente, se lo agradezco enormemente, ya que este proyecto es muy importante para mi persona.

Muchas gracias.

Roberto
Costa Rica
rmatarria@gmail.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

REPORTES EN PYTHON

Publicado por Roberto Matarrita rmatarria@gmail.com (105 intervenciones) el 20/11/2017 07:30:07
Buenas noches Andrés.
Estuve estudiando la página que me enviaste. Hice un reporte donde me lista solo el archivo plano, así de simple para ir viendo los resultados. Logre que se ejecutara el reporte como un PDF, aunque no lo puedo ver por pantalla todavía, me lo imprime directamente en una carpeta específica.

Ahora bien pero el problema no es ese, al realizar el reporte, solo me imprime los encabezados y no los datos, es decir lo imprime, pero al parecer no lo está ejecutando del todo. Eso lo hice con la siguiente porción de código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import os
import pyjasper
 
from platform import python_version
from pyjasper.jasperpy import JasperPy
 
#def processing():
input_file = os.path.dirname(os.path.abspath(__file__)) + '/report4.jrxml'
output = os.path.dirname(os.path.abspath(__file__)) + '/reportes'
print(input_file)
print(output)
 
jasper = JasperPy()
jasper.process(input_file, output_file=output, format_list=["pdf", "rtf","xlsx"])

Problema por solucionar.
1. Que se pueda ver por pantalla y no lo grabe directamente en una carpeta.
2. Ver porqué no se ejecuta del todo para ver los datos y no solo los encabezados.

Ahora bien, tengo otro problema, siguiendo el ejemplo, he tratado de conectarme a mi base de datos postgresqul, con el siguiente código y no me deja porque ya que da un error, que describo al puro final del ejemplo. El error dice que el driver no lo encuentra y desconozco cual puede ser para postgresql.

SEGUNDO EJEMPLO CON CONEXCION A LA BASE DE DATOS.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import os
import pyjasper
import sys
import psycopg2
from platform import python_version
from pyjasper.jasperpy import JasperPy
 
input_file = os.path.dirname(os.path.abspath(__file__)) + '/report4.jrxml'
output = os.path.dirname(os.path.abspath(__file__)) + '/report4.jrxml'
print(input_file)
print(output)
 
 #QPSQL
con = {'driver': 'postgres',
        'username': 'postgres',
        'password': 'Administra8080',
        'host': 'localhost',
        'database': 'municipal',
        'port':'5432'
    }
print (con)
 
try:
  print("Dentro del proceso 4.")
  jasper = JasperPy()
  print("Ya pasado el proceso 4.")
  jasper.process(input_file,output_file=output,format_list=["pdf"],db_connection=con)
except:
 print("Error en la comunicacion")
 
#advanced_example_using_database()


El error que envía es el siguiente.

C:\Serviur/report4.jrxml
C:\Serviur/report4.jrxml
{'driver': 'postgres', 'database': 'municipal', 'username': 'postgres', 'port': '5432', 'password': 'Administra8080', 'host': 'localhost'}

Unable to load driver: org.postgresql.Driver

***Repl Closed***

Mucho agradecería si me puedes ayudar, o bien cualquier programador del python.

Roberto
Costa Rica.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

REPORTES EN PYTHON

Publicado por Andrés (24 intervenciones) el 22/11/2017 03:13:02
Prueba colocando el driver en donde se instalo el pyjasper, por ejemplo en mi equipo es:

/usr/local/lib/python2.7/dist-packages/pyjasper/jasperstarter/jdbc

Para lo de cargar el pdf en la GUI, qué framework usas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad