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
private void btnImprimirActionPerformed
(java.
awt.
event.
ActionEvent evt
) { try {
//Mensaje de encabezado
//Mensaje en el pie de pagina
//Imprimir JTable
tabla.
print(JTable.
PrintMode.
NORMAL, headerFormat, footerFormat
); 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
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.
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.
out.
println(e.
getMessage()); }
}
/**Metodo para crear la conexion a DB*/
//Configuración de la conexión.
String driver
= "com.mysql.jdbc.Driver"; String connectString
= "jdbc:mysql://127.0.0.1:3306/almacen";
Class.forName(driver);
//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
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 {
public JTable2Pdf() {
setTitle("JTable test");
createToolbar();
createTable();
});
}
private void createTable() {
{"Mary", "Campione", "Snowboarding", new
{"Alison", "Huml", "Rowing", new
{"Kathy", "Walrath", "Chasing toddlers",
{"Mark", "Andrews", "Speed reading", new
{"Angela",
"Lih",
"Teaching high school",
new Integer(4),
new Boolean(false)}
};
{"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
}
private void createToolbar() {
print();
}
});
exit();
}
});
tb.add(printBtn);
tb.add(exitBtn);
}
/////////ojoo aqui es para imprimir el pdf
private void print() {
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();
e.printStackTrace();
System.
err.
println(e.
getMessage());
}
document.close();
}
/**
* Exit app
*/
private void exit() {
}
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...(http://oi52.tinypic.com/ipaz5e.jpg)
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 .. :-\ :-\