elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 01:54  


Tema destacado: ¡Aprende hacking con práctica! - WarZone, el wargame de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  diferentes maneras de generar un reporte en java?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: diferentes maneras de generar un reporte en java?  (Leído 1,183 veces)
hack-4-life

Desconectado Desconectado

Mensajes: 52



Ver Perfil WWW
diferentes maneras de generar un reporte en java?
« en: 13 Mayo 2011, 18:30 »

bueno esto esta algo enredado,lo que quiero hacer es generar un reporte de una consulta en java,pára eso ocupo ireport y librerias jasper report...ahora aqui viene mi problema...yo creo el reporte en ireport lo diseño..lo pongoe n una ubicacion y lo mando a llamar el jrxml,me lo compila y me lo manda en pantalla.....pero estaba pensando..si alguien de ustedes me podria decir la manera en que se puede ser automaticamente...

Oseaa tomar la tabla que esta activa con los registros y mandar el reporte asi automatico como hacen los sistemas de oxxo del walrtmart etc...

bueno con este codigo automaticamente me manda a imprimir......esto seria una
Código
 private void btnImprimirActionPerformed(java.awt.event.ActionEvent evt) {                                            
        try {
           //Mensaje de encabezado
           MessageFormat headerFormat = new MessageFormat("Tutorial Imprimir JTables");
           //Mensaje en el pie de pagina
           MessageFormat footerFormat = new MessageFormat("ContreSpace");
           //Imprimir JTable
           tabla.print(JTable.PrintMode.NORMAL, headerFormat, footerFormat);
       } catch (PrinterException ex) {
           Logger.getLogger(frmImprimir_JTable.class.getName()).log(Level.SEVERE, null, ex);
       }
   }                                        
 
 
 

ahoraa me pregunto si tal si le paso un query y de ese query me genera el reporte,perooo el reporte lo tengo que diseñar...con ireport...sigo buscando de como hacer esto pasando un query y que de ahi me genere el reporte..algo como esto
Código
package imprimir_jtable;
 
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.export.*;
import net.sf.jasperreports.engine.util.*;
import net.sf.jasperreports.view.*;
import java.sql.*;
 
import java.io.*;
import java.util.*;
 
public class Main {
 
   public Main() {
   }
 
   public static void main(String[] args) {
       // TODO code application logic here
 
   try
   {
 
       //Ruta de Archivo Jasper
       String fileName="C:\\Users\\Hacker\\Desktop\\rep_cli.jasper";
       //Ruta de archivo pdf de destino
       String destFileNamePdf="C:\\Users\\Hacker\\Desktop\\rep_cli.pdf";
       //Ruta de archivo xls de destino
       String destFileNameXls="C:\\Users\\Hacker\\Desktop\\rep_cli.xls";
 
       //Pasamos parametros al reporte Jasper.
       Map parameters = new HashMap();
           Object put = parameters.put("sql_query",new String("select * from categorias"));
 
 
       //Preparacion del reporte (en esta etapa se inserta el valor del query en el reporte).
       JasperPrint jasperPrint=JasperFillManager.fillReport(fileName, (Map) put,getConnection());
 
       //Creación del PDF
       JasperExportManager.exportReportToPdfFile(jasperPrint,destFileNamePdf);
 
       //Creación del XLS
       JRXlsExporter exporter = new JRXlsExporter();
       exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
       exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFileNameXls);
       exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
       exporter.exportReport();
 
       System.exit(0);
    }
    catch (Exception e)
    {
           System.out.println(e.getMessage());
    }
   }
 
   /**Metodo para crear la conexion a DB*/
   private static Connection getConnection() throws ClassNotFoundException, SQLException {
       //Configuración de la conexión.
       String driver = "com.mysql.jdbc.Driver";
       String connectString = "jdbc:mysql://127.0.0.1:3306/almacen";
       String user = "root";
       String password = "12345";
 
       Class.forName(driver);
       Connection conn = DriverManager.getConnection(connectString, user, password);
 
       //Retornamos la conexión establecida.
   return conn;
}
 
}
 
 
 
 
 
 


esta otra manera encontre donde se le pasan las columnas y las filas pero ahi ya estan declaradas como seria para pasarle un query me lo genere de ese resultado....aqui ocupan la libreria  libreria itext
Código
 
 
package imprimir_jtable;
 
import java.awt.BorderLayout;
 
import java.awt.Graphics2D;
 
import java.awt.Shape;
 
import java.awt.event.ActionEvent;
 
import java.awt.event.ActionListener;
 
import java.awt.event.WindowAdapter;
 
import java.awt.event.WindowEvent;
 
import java.io.FileOutputStream;
 
import java.io.IOException;
 
import javax.swing.JButton;
 
import javax.swing.JFrame;
 
import javax.swing.JPanel;
 
import javax.swing.JTable;
 
import javax.swing.JToolBar;
 
import com.lowagie.text.Document;
 
import com.lowagie.text.DocumentException;
 
import com.lowagie.text.PageSize;
 
import com.lowagie.text.pdf.PdfContentByte;
 
import com.lowagie.text.pdf.PdfWriter;
 
 
public class JTable2Pdf extends JFrame {
 
 
private JTable table;
 
 
public JTable2Pdf() {
 
getContentPane().setLayout(new BorderLayout());
 
setTitle("JTable test");
 
createToolbar();
 
createTable();
 
addWindowListener(new WindowAdapter() {
 
public void windowClosing(WindowEvent e)
 
{System.exit(0);}
 
});
 
}
 
 
 
private void createTable() {
 
Object[][] data ={
 
{"Mary", "Campione", "Snowboarding", new
 
Integer(5), new Boolean(false)},
 
{"Alison", "Huml", "Rowing", new
 
Integer(3), new Boolean(true)},
 
{"Kathy", "Walrath", "Chasing toddlers",
 
new Integer(2), new Boolean(false)},
 
{"Mark", "Andrews", "Speed reading", new
 
Integer(20), new Boolean(true)},
 
{"Angela", "Lih", "Teaching high school", new Integer(4), new Boolean(false)}
 
};
 
String[] columnNames =
 
{"First Name", "Last Name", "Sport", "# of Years", "Vegetarian"};
 
table = new JTable(data, columnNames);
 
// Use a panel to contains the table and add it the frame
 
JPanel tPanel = new JPanel(new BorderLayout());
 
tPanel.add(table.getTableHeader(), BorderLayout.NORTH);
 
tPanel.add(table, BorderLayout.CENTER);
 
getContentPane().add(tPanel, BorderLayout.CENTER);
 
}
 
 
private void createToolbar() {
 
JToolBar tb = new JToolBar();
 
JButton printBtn = new JButton("Print");
 
printBtn.addActionListener(new ActionListener() {
 
public void actionPerformed(ActionEvent e) {
 
print();
 
}
 
});
 
JButton exitBtn = new JButton("Exit");
 
exitBtn.addActionListener(new ActionListener() {
 
public void actionPerformed(ActionEvent e) {
 
exit();
 
}
 
});
 
tb.add(printBtn);
 
tb.add(exitBtn);
 
getContentPane().add(tb, BorderLayout.NORTH);
 
}
 
/////////ojoo aqui es para imprimir el pdf
private void print() {
 
Document document = new Document(PageSize.A4.rotate());
 
try {
 
PdfWriter writer =
 
PdfWriter.getInstance(document, new FileOutputStream("C:\\Users\\Hacker\\Desktop\\myy_jtable_fonts.pdf"));
 
document.open();
 
PdfContentByte cb = writer.getDirectContent();
 
// Create the graphics as shapes
 
cb.saveState();
 
Graphics2D g2 = cb.createGraphicsShapes(500, 500);
 
// Print the table to the graphics
 
Shape oldClip = g2.getClip();
 
g2.clipRect(0, 0, 500, 500);
 
table.print(g2);
 
g2.setClip(oldClip);
 
g2.dispose();
 
cb.restoreState();
 
document.newPage();
 
// Create the graphics with pdf fonts
 
cb.saveState();
 
g2 = cb.createGraphics(500, 500);
 
// Print the table to the graphics
 
oldClip = g2.getClip();
 
g2.clipRect(0, 0, 500, 500);
 
table.print(g2);
 
g2.setClip(oldClip);
 
g2.dispose();
 
cb.restoreState();
 
} catch (Exception e) {
 
e.printStackTrace();
 
System.err.println(e.getMessage());
 
}
 
document.close();
 
}
 
/**
 
* Exit app
 
*/

 
private void exit() {
 
System.exit(0);
 
}
 
 
public static void main(String[] args) {
 
JTable2Pdf frame = new JTable2Pdf();
 
frame.pack();
 
frame.setVisible(true);
 
frame.print();
 
frame.exit();
 
}
 
}v
 
 

y esto me da como resultado esto...

no se si ustedes me podria ayudar o dar alguna sugerenciaa  de como han ustedes trabajado con esto y solucionado,si no es mucha molestiaa...de antemano muchas gracias saludos...maness.... seguire buscando en el sen sei google e ir implementando aver si me sale algo decente .. :-\ :-\


« Última modificación: 13 Mayo 2011, 18:35 por hack-4-life » En línea

""DE QUE SIRVE EL CONOCIMIENTO SI SE PRIVA DE SU DISTRIBUCION"
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda generar informes desde java
Desarrollo Web
LordJackoB 0 408 Último mensaje 8 Noviembre 2006, 14:55
por LordJackoB
Manual para abrir los puertos de 3 maneras diferentes [By eR CoNe]
Redes
eR CoNe 0 407 Último mensaje 16 Febrero 2008, 05:43
por eR CoNe
necesito generar reporte con registros determinados ayuda
Programación Visual Basic
chegue 5 1,723 Último mensaje 13 Diciembre 2008, 20:14
por chegue
ASP:NET - SQL SERVER R2 2008 - generar reporte URGENTE!!!
Bases de Datos
there38 0 1,013 Último mensaje 7 Junio 2011, 05:39
por there38
Generar diccionarios WPA con java
Java
Gabilitron 5 639 Último mensaje 19 Abril 2012, 13:55
por Gabilitron
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines