Hola Amigo, 
 
Yo lo hago con la librería poi, consulta un poco sobre esta sin embargo te dejo el ejemplo de cómo lo hago:    
Código JAVA:
Ver original/**
     * Exporta un archivo de excel desde una consulta sql
     * @param SQL
     * @param nomArch
     */
        try{
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet("Resultado Filtro");
        HSSFRow rowhead = sheet.createRow(0);
 
        //Este es un objeto que implemente el cual se encarga de hacer la conexión
       //con el servidor x, retorna un ResultSet
        BaseDatos Datos = new BaseDatos(SQL,true);
        
        for(int i = 0; i < Datos.getColumnCount(); i++){
            rowhead.createCell(i).setCellValue(Datos.getColumnName(i));
        }
 
        for(int fil=1; fil<Datos.getRowCount(); fil++){
                HSSFRow row = sheet.createRow(fil);
            for(int col=0; col<Datos.getColumnCount(); col++){
                try{
                    row.createCell(col).setCellValue(Datos.getValueAt(fil-1, col).toString());
                    row.createCell(col).setCellValue("");
                }
            }
        }
 
        wb.write(fileOut);
        fileOut.close();
 
        //Ejecutar archivo de excel
        Runtime.
getRuntime().
exec("cmd /c start C:\\"+nomArch
+".xls");  
        }
                    (null, "Error al exportar la consulta: " + e);
        }
    }
  
Espero sea de ayuda, saludos...