jueves, 2 de agosto de 2012

Exportar/Importar datos con Excel desde java





Hace unosdíasun amigo de facebookJosué Colmán, me comento que tenia problemas al momento de generar un reporte con el apiJExcel el cual nos permite generar hojas de excel desde java.
¿Como trabajamos con el API JEXCEL?
primero tenemos que importar la libreria jxl.jar a nuestro proyecto(el proyecto de descarga ya lo tiene incluido), una vez realizado esto se crea una clase con la cual vamos a pasar los datos que contiene el JTable, con un List o ArrayList el cualcontendráel objecto table.

 
try {
/******************AGREGO EL JTABLA A UN ARRAYLIST***************************/
Listtb = new ArrayList();
tb.add(table_exportar);
//-------------------
exportar_excel excelExporter = new exportar_excel(tb, new File("DATOS_EXPORTADOS.xls"));
if (excelExporter.export()) {
JOptionPane.showMessageDialog(null, "DATOS EXPORTADOS CON EXITO!");
}
} catch (Exception ex) {
ex.printStackTrace();
}
llama_excel();


la claseexportar_excel nos recibe el List y una File el cual nos crea el fichero.xls(fomato de excel), dentro de esta clase tenemos las propiedades que nos ayudan a añadir los datos,esta api es completa deben de conocerla bien para poder aprovechar todo las propiedades,como por ejemplo,colocarimágenes, realizar formulas,ect.
writableFont: nos permite colocar el estilo de fuente y tamaño de este.
CellView: nos da formato a las celdas o celulas en este caso el tamaño

WritableFont times10pt = new WritableFont(WritableFont.TAHOMA, 14);
// definimos el formato d ela celda
WritableCellFormat times = new WritableCellFormat(times10pt);
// Permite si se ajusta automáticamente a las células
//times.setWrap(true);
// crea una negrita con subrayado
WritableFont times10ptBoldUnderline = new WritableFont(WritableFont.TAHOMA, 10, WritableFont.BOLD, false,UnderlineStyle.SINGLE);
fomato_columna = new WritableCellFormat(times10ptBoldUnderline);
// Permite que se ajusta automáticamente a las células
//fomato_columna.setWrap(true);
CellView cv = new CellView();
cv.setSize(220);
cv.setDimension(70);
cv.setFormat(times);
cv.setFormat(fomato_columna);
//cv.setAutosize(true);
// escribimos las columnas
addColumna(sheet, number_columna, 0, columna,fomato_columna);//numero de columna , 0 es la fila
addColumna es elmétodoque nos recibe el numero de filas y columnas que vamos a crear junto con las etiquetas para crear solo las columnas de la tabla en la hoja de excel.
 private void addColumna(WritableSheet sheet, int column,
int row, String s,WritableCellFormat format)throws RowsExceededException, WriteException {
Label label;
label = new Label(column, row, s, format);
sheet.addCell(label);
}


¿Importar una hoja de excel a un JTable?
para poder leer una hoja de excelnecesitamosde la claseworkbook, esta clase nos permite leer el archivo hay que tener en cuenta que un archivo de excel esta compuesto por varias hojas de trabajo aquíse debe de especificar el numero de la hoja que se va a leer.
Para extraer el numero de columnas y filas existentes necesitamos esta clase.
  Sheet sheet = workbook.getSheet(0); 

de esta manera podermos extraer el numero de filas y columnas queesténescritos, con los metodosgetColumns() ygetRows().


         Sheet sheet = workbook.getSheet(0); 
columna.clear();

for (int i = 0; i sheet.getColumns(); i++) {
Cell cell1 = sheet.getCell(i, 0);
columna.add(cell1.getContents());
}
filas.clear();

for (int j = 1; j sheet.getRows(); j++) {

Vector d = new Vector();

for (int i = 0; i sheet.getColumns(); i++) {

Cell cell = sheet.getCell(i, j);
d.add(cell.getContents());
}
d.add("\n");
filas.add(d);
}


DESCARGAR





1 comentario: