Generar ficheros XLS desde java

Como ya comenté he cambiado de trabajo y vuelvo programar.

Una de las cosas que tenía que hacer hoy era generar un fichero XLS (de excel) a partir del resultado de una consulta.

Loa de Apache tienen unas librerías para ello, las Apache POI - HSSF.
Con ellas todo es muy fácil. Descargas la librería poi-3.5-FINAL-20090928.jar, y ha generar XLS como churros.

Os pongo el código que he generado por si os es útil. De momento es una primera versión hecha en diez mintos (sin gestión de errores ni comentarios).

Espero que os sea útil.

import java.io.FileOutputStream;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class SQL2Excel {

private static void pintaCabecera(HSSFRow r, ResultSetMetaData rsm) {
try {
for (int i = 0; i < rsm.getColumnCount(); i++) {
r.createCell(i).setCellValue(rsm.getColumnName(i+1));
}
} catch (SQLException e) {
e.printStackTrace();
}
}

public static int escribeSQL(String fichero, String nombreHoja, ResultSet rs, Boolean conCabecera) {
int fila;
int numFilas;
HSSFRow r;
try {
// crea workbook
HSSFWorkbook wb = new HSSFWorkbook();
// crea hoja
HSSFSheet hs = wb.createSheet(nombreHoja);
fila = 0;
// averigua tamaños
ResultSetMetaData rsm = rs.getMetaData();
numFilas = rsm.getColumnCount();
// Pinta cabecera
if (conCabecera) {
r = hs.createRow(fila++);
pintaCabecera(r, rsm);
}
// bucle
while (rs.next()) {
r = hs.createRow(fila++);
for (int i = 0; i < numFilas; i++) {
r.createCell(i).setCellValue(rs.getString(i+1));
}
}
// graba datos
FileOutputStream fo = new FileOutputStream(fichero);
wb.write(fo);
fo.close();
return fila;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
}

Comentarios

Entradas populares de este blog

Fotos efecto Gameboy

A nadie le gusta que le corrijan

Agenda FNAC, primera semana de febrero