elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  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 6,616 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 pm »

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
  1. private void btnImprimirActionPerformed(java.awt.event.ActionEvent evt) {                                            
  2.         try {
  3.            //Mensaje de encabezado
  4.            MessageFormat headerFormat = new MessageFormat("Tutorial Imprimir JTables");
  5.            //Mensaje en el pie de pagina
  6.            MessageFormat footerFormat = new MessageFormat("ContreSpace");
  7.            //Imprimir JTable
  8.            tabla.print(JTable.PrintMode.NORMAL, headerFormat, footerFormat);
  9.        } catch (PrinterException ex) {
  10.            Logger.getLogger(frmImprimir_JTable.class.getName()).log(Level.SEVERE, null, ex);
  11.        }
  12.    }                                        
  13.  
  14.  
  15.  

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
  1. package imprimir_jtable;
  2.  
  3. import net.sf.jasperreports.engine.*;
  4. import net.sf.jasperreports.engine.export.*;
  5. import net.sf.jasperreports.engine.util.*;
  6. import net.sf.jasperreports.view.*;
  7. import java.sql.*;
  8.  
  9. import java.io.*;
  10. import java.util.*;
  11.  
  12. public class Main {
  13.  
  14.    public Main() {
  15.    }
  16.  
  17.    public static void main(String[] args) {
  18.        // TODO code application logic here
  19.  
  20.    try
  21.    {
  22.  
  23.        //Ruta de Archivo Jasper
  24.        String fileName="C:\\Users\\Hacker\\Desktop\\rep_cli.jasper";
  25.        //Ruta de archivo pdf de destino
  26.        String destFileNamePdf="C:\\Users\\Hacker\\Desktop\\rep_cli.pdf";
  27.        //Ruta de archivo xls de destino
  28.        String destFileNameXls="C:\\Users\\Hacker\\Desktop\\rep_cli.xls";
  29.  
  30.        //Pasamos parametros al reporte Jasper.
  31.        Map parameters = new HashMap();
  32.            Object put = parameters.put("sql_query",new String("select * from categorias"));
  33.  
  34.  
  35.        //Preparacion del reporte (en esta etapa se inserta el valor del query en el reporte).
  36.        JasperPrint jasperPrint=JasperFillManager.fillReport(fileName, (Map) put,getConnection());
  37.  
  38.        //Creación del PDF
  39.        JasperExportManager.exportReportToPdfFile(jasperPrint,destFileNamePdf);
  40.  
  41.        //Creación del XLS
  42.        JRXlsExporter exporter = new JRXlsExporter();
  43.        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
  44.        exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFileNameXls);
  45.        exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
  46.        exporter.exportReport();
  47.  
  48.        System.exit(0);
  49.     }
  50.     catch (Exception e)
  51.     {
  52.            System.out.println(e.getMessage());
  53.     }
  54.    }
  55.  
  56.    /**Metodo para crear la conexion a DB*/
  57.    private static Connection getConnection() throws ClassNotFoundException, SQLException {
  58.        //Configuración de la conexión.
  59.        String driver = "com.mysql.jdbc.Driver";
  60.        String connectString = "jdbc:mysql://127.0.0.1:3306/almacen";
  61.        String user = "root";
  62.        String password = "12345";
  63.  
  64.        Class.forName(driver);
  65.        Connection conn = DriverManager.getConnection(connectString, user, password);
  66.  
  67.        //Retornamos la conexión establecida.
  68.    return conn;
  69. }
  70.  
  71. }
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  


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
  1.  
  2.  
  3. package imprimir_jtable;
  4.  
  5. import java.awt.BorderLayout;
  6.  
  7. import java.awt.Graphics2D;
  8.  
  9. import java.awt.Shape;
  10.  
  11. import java.awt.event.ActionEvent;
  12.  
  13. import java.awt.event.ActionListener;
  14.  
  15. import java.awt.event.WindowAdapter;
  16.  
  17. import java.awt.event.WindowEvent;
  18.  
  19. import java.io.FileOutputStream;
  20.  
  21. import java.io.IOException;
  22.  
  23. import javax.swing.JButton;
  24.  
  25. import javax.swing.JFrame;
  26.  
  27. import javax.swing.JPanel;
  28.  
  29. import javax.swing.JTable;
  30.  
  31. import javax.swing.JToolBar;
  32.  
  33. import com.lowagie.text.Document;
  34.  
  35. import com.lowagie.text.DocumentException;
  36.  
  37. import com.lowagie.text.PageSize;
  38.  
  39. import com.lowagie.text.pdf.PdfContentByte;
  40.  
  41. import com.lowagie.text.pdf.PdfWriter;
  42.  
  43.  
  44. public class JTable2Pdf extends JFrame {
  45.  
  46.  
  47. private JTable table;
  48.  
  49.  
  50. public JTable2Pdf() {
  51.  
  52. getContentPane().setLayout(new BorderLayout());
  53.  
  54. setTitle("JTable test");
  55.  
  56. createToolbar();
  57.  
  58. createTable();
  59.  
  60. addWindowListener(new WindowAdapter() {
  61.  
  62. public void windowClosing(WindowEvent e)
  63.  
  64. {System.exit(0);}
  65.  
  66. });
  67.  
  68. }
  69.  
  70.  
  71.  
  72. private void createTable() {
  73.  
  74. Object[][] data ={
  75.  
  76. {"Mary", "Campione", "Snowboarding", new
  77.  
  78. Integer(5), new Boolean(false)},
  79.  
  80. {"Alison", "Huml", "Rowing", new
  81.  
  82. Integer(3), new Boolean(true)},
  83.  
  84. {"Kathy", "Walrath", "Chasing toddlers",
  85.  
  86. new Integer(2), new Boolean(false)},
  87.  
  88. {"Mark", "Andrews", "Speed reading", new
  89.  
  90. Integer(20), new Boolean(true)},
  91.  
  92. {"Angela", "Lih", "Teaching high school", new Integer(4), new Boolean(false)}
  93.  
  94. };
  95.  
  96. String[] columnNames =
  97.  
  98. {"First Name", "Last Name", "Sport", "# of Years", "Vegetarian"};
  99.  
  100. table = new JTable(data, columnNames);
  101.  
  102. // Use a panel to contains the table and add it the frame
  103.  
  104. JPanel tPanel = new JPanel(new BorderLayout());
  105.  
  106. tPanel.add(table.getTableHeader(), BorderLayout.NORTH);
  107.  
  108. tPanel.add(table, BorderLayout.CENTER);
  109.  
  110. getContentPane().add(tPanel, BorderLayout.CENTER);
  111.  
  112. }
  113.  
  114.  
  115. private void createToolbar() {
  116.  
  117. JToolBar tb = new JToolBar();
  118.  
  119. JButton printBtn = new JButton("Print");
  120.  
  121. printBtn.addActionListener(new ActionListener() {
  122.  
  123. public void actionPerformed(ActionEvent e) {
  124.  
  125. print();
  126.  
  127. }
  128.  
  129. });
  130.  
  131. JButton exitBtn = new JButton("Exit");
  132.  
  133. exitBtn.addActionListener(new ActionListener() {
  134.  
  135. public void actionPerformed(ActionEvent e) {
  136.  
  137. exit();
  138.  
  139. }
  140.  
  141. });
  142.  
  143. tb.add(printBtn);
  144.  
  145. tb.add(exitBtn);
  146.  
  147. getContentPane().add(tb, BorderLayout.NORTH);
  148.  
  149. }
  150.  
  151. /////////ojoo aqui es para imprimir el pdf
  152. private void print() {
  153.  
  154. Document document = new Document(PageSize.A4.rotate());
  155.  
  156. try {
  157.  
  158. PdfWriter writer =
  159.  
  160. PdfWriter.getInstance(document, new FileOutputStream("C:\\Users\\Hacker\\Desktop\\myy_jtable_fonts.pdf"));
  161.  
  162. document.open();
  163.  
  164. PdfContentByte cb = writer.getDirectContent();
  165.  
  166. // Create the graphics as shapes
  167.  
  168. cb.saveState();
  169.  
  170. Graphics2D g2 = cb.createGraphicsShapes(500, 500);
  171.  
  172. // Print the table to the graphics
  173.  
  174. Shape oldClip = g2.getClip();
  175.  
  176. g2.clipRect(0, 0, 500, 500);
  177.  
  178. table.print(g2);
  179.  
  180. g2.setClip(oldClip);
  181.  
  182. g2.dispose();
  183.  
  184. cb.restoreState();
  185.  
  186. document.newPage();
  187.  
  188. // Create the graphics with pdf fonts
  189.  
  190. cb.saveState();
  191.  
  192. g2 = cb.createGraphics(500, 500);
  193.  
  194. // Print the table to the graphics
  195.  
  196. oldClip = g2.getClip();
  197.  
  198. g2.clipRect(0, 0, 500, 500);
  199.  
  200. table.print(g2);
  201.  
  202. g2.setClip(oldClip);
  203.  
  204. g2.dispose();
  205.  
  206. cb.restoreState();
  207.  
  208. } catch (Exception e) {
  209.  
  210. e.printStackTrace();
  211.  
  212. System.err.println(e.getMessage());
  213.  
  214. }
  215.  
  216. document.close();
  217.  
  218. }
  219.  
  220. /**
  221.  
  222. * Exit app
  223.  
  224. */
  225.  
  226. private void exit() {
  227.  
  228. System.exit(0);
  229.  
  230. }
  231.  
  232.  
  233. public static void main(String[] args) {
  234.  
  235. JTable2Pdf frame = new JTable2Pdf();
  236.  
  237. frame.pack();
  238.  
  239. frame.setVisible(true);
  240.  
  241. frame.print();
  242.  
  243. frame.exit();
  244.  
  245. }
  246.  
  247. }v
  248.  
  249.  

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 pm 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:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines