Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Exportar e Importar A Excel Desde Java
Exportar e Importar A Excel Desde Java
public libro_ingresado() {
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getAutor() {
return autor;
}
public void setAutor(String autor) {
this.autor = autor;
}
public String getEdicion() {
return edicion;
}
public void setEdicion(String edicion) {
this.edicion = edicion;
}
public String getAnio() {
return anio;
}
public void setAnio(String anio) {
this.anio = anio;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
}
/////// clase de manejo de csv //////////
import com.csvreader.CsvReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JOptionPane;
public class leer_archivo {
public ArrayList leer_archivo_exel(String archivo){
ArrayList lista_libros = new ArrayList();
CsvReader reader = null;
try {
reader = new CsvReader(archivo,';');
} catch (FileNotFoundException ex) {
ex.printStackTrace();
JOptionPane.showInputDialog("en leer archivo");
}
try {
reader.readHeaders();
} catch (IOException ex) {
ex.printStackTrace();
}
try {
libro_ingresado libr;
while (reader.readRecord())
{
libr=new libro_ingresado();
libr.setNombre(reader.get("nombre"));
libr.setAutor(reader.get("autor"));
libr.setEdicion(reader.get("edicion"));
libr.setAnio(reader.get("anio"));
libr.setCodigo(reader.get("codigo"));
libr.setArea(reader.get("area"));
lista_libros.add(libr); // aadimos el objeto al arrayList
}
} catch (IOException ex) {
ex.printStackTrace();
System.err.println(" en while readrecord ");
}
reader.close();
return lista_libros; // retorna una objeto de ArrayList
}
}
////////////////////////////////////////////////////////
el siquiente codigo es abrir un JFileChooser donde buscamos
nuestro archivo csv , luego lo seleccionamos y es procesado.
el archivo es pasado a un jtable
datos[5]=lib_ing.getArea();
dtm.addRow(datos);
}
} catch(Exception e){
//manejo de error
}
} else if (status == JFileChooser.CANCEL_OPTION) {
System.out.println("cancele");
}
//////////////////////////////////////////////////
como fin un link de interes
En este ejemplo vamos a crear una hoja Excel desde Java usando la librera POI. Para
ello, lo primero es descargarse la librera POI desde su pgina de descargas
http://www.apache.org/dyn/closer.cgi/poi/
Una vez descargada y desempaquetada, tendremos una serie de jars que deberemos aadir a
nuestro proyecto Java o a nuestro CLASSPATH. En el momento de escribir este ejemplo,
los jar obtenidos eran
poi-3.0.2-FINAL-20080204.jar
poi-scratchpad-3.0.2-FINAL-20080204.jar
poi-contrib-3.0.2-FINAL-20080204.jar
Estando todo preparado, ya podemos escribir nuestro programa Java. Lo primero de todo,
es crear lo que en Excel se conoce como un libro de trabajo (workbook). Este ser nuestro
"Excel".
HSSFWorkbook libro = new HSSFWorkbook();
Un libro de trabajo tiene hojas, as que debermos aadir al menos una hoja
HSSFSheet hoja = libro.createSheet();
A la hoja debemos aadirle las filas que deseemos. Para nuestro ejemplo, nos bastar con
una. La numeracin empieza en cero.
HSSFRow fila = hoja.createRow(0);
Una vez que tenemos la celda, ya slo nos resta escribir en ella lo que queramos: una
frmula, un nmero, un booleano, un texto, etc. Para ello usaremos los mtodos de la celda
HSSFCell. En nuestro caso y por se el ms complejo, lo haremos para un String. El mtodo
setCellValue(String) est obsoleto, as que usaremos el mtodo
Listo, ya tenemos una hoja de Excel muy sencilla con un "hola mundo" en la primera celda
de la tabla. Slo nos queda grabar el fichero. Para ello, usamos el mtodo write() del
HSSFWorkbook
try {
FileOutputStream elFichero = new FileOutputStream("holamundo.xls");
libro.write(elFichero);
elFichero.close();
} catch (Exception e) {
e.printStackTrace();
}
Y ahora el cdigo completo para este ejemplo de Excel con Java y POI
package com.chuidiang.ejemplos.poi_excel;
import java.io.FileOutputStream;
import
import
import
import
import
org.apache.poi.hssf.usermodel.HSSFCell;
org.apache.poi.hssf.usermodel.HSSFRichTextString;
org.apache.poi.hssf.usermodel.HSSFRow;
org.apache.poi.hssf.usermodel.HSSFSheet;
org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
* Ejemplo sencillo de cmo crear una hoja Excel con POI
*
* @author chuidiang
*
*/
public class EjemploCrearExcel {
/**
* Crea una hoja Excel y la guarda.
*
* @param args
*/
public static void main(String[] args) {
// Se crea el libro
HSSFWorkbook libro = new HSSFWorkbook();
// Se crea una hoja dentro del libro
HSSFSheet hoja = libro.createSheet();
// Se crea una fila dentro de la hoja
HSSFRow fila = hoja.createRow(0);
// Se crea una celda dentro de la fila
HSSFCell celda = fila.createCell((short) 0);
2. Crear un rango nombrado que cuente el numero de valores que pueden cubrir
nuestros datos.
6. Ahora pueden agregarse datos en la fila por debajo de la ultima con datos y estos
se agregaran a la grfica.
Una libreria a la que le encontre mucho uso, y me saco de apuro en innumerables ocasiones
es Jakarta POI .
Una API de Jakarta destinada al manejo de archivos Excels. Muy sencilla de utilizar, con
mucha potencia, permite crear un nuevo archivo, leer uno ya existente, no solo crear hojas
de calculo con datos sino con formulas, formato, graficos en ella.
Vean la guia rapida para ver lo sencillo que es utilizar este libreria.
import
import
import
import
import
import
import
import
java.io.*;
java.util.*;
java.awt.*;
java.awt.event.*;
javax.swing.*;
javax.swing.table.*;
javax.swing.border.*;
javax.swing.event.*;
import
import
import
import
import
org.apache.poi.hssf.usermodel.*;
org.apache.poi.hssf.record.*;
org.apache.poi.hssf.model.*;
org.apache.poi.hssf.util.*;
org.apache.poi.hssf.usermodel.HSSFCellStyle;
panel.add(getPanelBotones(),BorderLayout.NORTH);
panel.add(getPanelTabla(),BorderLayout.CENTER);
setContentPane(panel);
setVisible(true);
pack();
return scrol;
/*
* Construye el panel con el boton
*/
private JPanel getPanelBotones() {
JButton btnExportar = new JButton("Exportar");
ExportarListener listener = new ExportarListener();
btnExportar.addActionListener(listener);
JPanel panel = new JPanel(new FlowLayout());
panel.add(btnExportar);
return panel;
}
public static void main(String[] args) {
EjemploPOI frame = new EjemploPOI();
}
En esta pgina se muestra un programa java completo como ejemplo de uso de la librera
Jakarta POI. Puedes encontrar mucha ms informacin sobre esta librera en el artculo
original que contiene este ejemplo.
1 import java.io.FileInputStream;
2 import java.io.FileOutputStream;
3 import java.io.IOException;
4
import java.util.Date;
5
import org.apache.poi.hssf.usermodel.HSSFCell;
6 import org.apache.poi.hssf.usermodel.HSSFCellStyle;
7 import org.apache.poi.hssf.usermodel.HSSFDataFormat;
8 import org.apache.poi.hssf.usermodel.HSSFRow;
9
10
11
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
12
13
14
15
16
escribirExcel();
17
18
leerExcel();
19
20
21
System.out.println("Ejemplo Finalizado.");
}
22
23
24
25
try
26
27
28
29
30
31
32
33
34
35
36
37
row.createCell((short)0).setCellValue(1);
row.createCell((short)1).setCellValue(1.2);
38
row.createCell((short)2).setCellValue("ejemplo");
39
row.createCell((short)3).setCellValue(true);
40
41
42
43
44
cellStyle.setDataFormat(
45
HSSFDataFormat.getBuiltinFormat("d/m/yy h:mm"));
46
47
48
cell.setCellValue(new Date());
49
cell.setCellStyle(cellStyle);
50
51
52
FileOutputStream fileOut =
new FileOutputStream("ejemplo.xls");
53
54
55
wb.write(fileOut);
56
fileOut.close();
57
58
catch(IOException e)
59
{
System.out.println("Error al escribir el fichero.");
60
}
61
62
63
64
65
66
67
68
69
new POIFSFileSystem(
70
new FileInputStream("c:ejemplo.xls"));
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
if (cell != null)
{
89
90
switch(cell.getCellType())
91
92
case HSSFCell.CELL_TYPE_NUMERIC:
93
System.out.println("Nmero: " +
94 cell.getNumericCellValue());
break;
95
case HSSFCell.CELL_TYPE_STRING:
96
97
System.out.println("String: " +
cell.getStringCellValue());
98
break;
99
case HSSFCell.CELL_TYPE_BOOLEAN:
10
System.out.println("Boolean: " +
0 cell.getBooleanCellValue());
break;
10
1
default:
10
2 cell.getDateCellValue());
10
3
break;
}
10
4
10
5
10
System.out.println("Default: " +
}
}
}
6
10
7
10
8
10
9
11
0
catch(IOException ex)
11
1
11
2
11
3
11
4
11
5
11
6
11
7
11
8
}
}
El presente tutorial espero les sirva como referencia para el uso de la librera POI. Si tienen
alguna observacin y/o correccin deseo que me la hagan llegar.
Al principio, descargas los jars correspondientes a la ltima versin desde la web de
Apache POI (http://poi.apache.org/)
Copias los jars en la carpeta de libreras (WEB-INF/lib).
Es importante tener en cuenta que cada archivo de Excel representa un LIBRO, dentro de
cada libro tenemos HOJAS, dentro de cada HOJA tenemos FILAS, y, finalmente, en cada
FILA tenemos CELDAS. Hago mencin de esto porque nos ayudar a ver cmo se
organiza la informacin en el archivo.
Notemos que el valor que se enva al mtodo encargado de crear las filas es de tipo short, el
mismo que indica el nmero correspondiente a la fila que hemos de trabajar. El ndice de
las filas empieza en 0, aunque ello no nos impide trabajar directamente con otras filas.
Una vez creada la fila, empezamos a trabajar con las celdas.
// Aunque no es necesario podemos establecer estilos a las celdas.
// Primero, establecemos el tipo de fuente
HSSFFont fuente = objLibro.createFont();
fuente.setFontHeightInPoints((short)11);
fuente.setFontName(fuente.FONT_ARIAL);
fuente.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// Luego creamos el objeto que se encargar de aplicar el estilo a la
celda
HSSFCellStyle estiloCelda = objLibro.createCellStyle();
estiloCelda.setWrapText(true);
estiloCelda.setAlignment(HSSFCellStyle. ALIGN_JUSTIFY);
estiloCelda.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);
estiloCelda.setFont(fuente);
// Tambin, podemos establecer bordes...
estiloCelda.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
estiloCelda.setBottomBorderColor((short)8);
estiloCelda.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
estiloCelda.setLeftBorderColor((short)8);
estiloCelda.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
estiloCelda.setRightBorderColor((short)8);
estiloCelda.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
estiloCelda.setTopBorderColor((short)8);
// Establecemos el tipo de sombreado de nuestra celda
estiloCelda.setFillForegroundColor((short)22);
estiloCelda.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
// Creamos la celda, aplicamos el estilo y definimos
// el tipo de dato que contendr la celda
HSSFCell celda = objFila.createCell((short)0);
celda.setCellStyle(estiloCelda);
celda.setCellType(HSSFCell.CELL_TYPE_STRING);
// Finalmente, establecemos el valor
celda.setCellValue("Un valor");
// Creo la hoja
HSSFSheet hoja1 = objWB.createSheet("hoja 1");
// Proceso la informacin y genero el xls.
HSSFRow fila = hoja1.createRow((short)1);
// Aunque no es necesario podemos establecer estilos a las celdas.
// Primero, establecemos el tipo de fuente
HSSFFont fuente = objLibro.createFont();
fuente.setFontHeightInPoints((short)11);
fuente.setFontName(fuente.FONT_ARIAL);
fuente.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// Luego creamos el objeto que se encargar de aplicar el estilo a la
celda
HSSFCellStyle estiloCelda = objLibro.createCellStyle();
estiloCelda.setWrapText(true);
estiloCelda.setAlignment(HSSFCellStyle. ALIGN_JUSTIFY);
estiloCelda.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);
estiloCelda.setFont(fuente);
// Tambin, podemos establecer bordes...
estiloCelda.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
estiloCelda.setBottomBorderColor((short)8);
estiloCelda.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
estiloCelda.setLeftBorderColor((short)8);
estiloCelda.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
estiloCelda.setRightBorderColor((short)8);
estiloCelda.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
estiloCelda.setTopBorderColor((short)8);
// Establecemos el tipo de sombreado de nuestra celda
estiloCelda.setFillForegroundColor((short)22);
estiloCelda.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
// Creamos la celda, aplicamos el estilo y definimos
// el tipo de dato que contendr la celda
HSSFCell celda = objFila.createCell((short)0);
celda.setCellStyle(estiloCelda);
celda.setCellType(HSSFCell.CELL_TYPE_STRING);
// Finalmente, establecemos el valor
celda.setCellValue("Un valor");
// Volcamos la informacin a un archivo.
String strNombreArchivo = "C:/libro1.xls";
File objFile = new File(strNombreArchivo);
FileOutputStream archivoSalida = new FileOutputStream(objFile);
objWB.write(archivoSalida);
archivoSalida.close();
El objetivo de este tutorial no es mostrar todas las opciones disponibles, sino solo presentar
un pequeo caso prctico sobre el uso de HSSF (POI) para la generacin de archivos en
formato Excel.
Deseo mencionar que para la creacin del presente tutorial me bas en la documentacin de
la pgina de Apache POI as como tambin al contenido de la pgina JAVA DRIVE (en
japons).