Archivos para 11/06/09

Generar una hoja Excel desde Java

ExcelJava

Hace tiempo implemente una libreria en Java para generar hojas en formato Excel mediante JNI (era genial, usaba macros, creaba graficas de tarta o de lineas directamente desde los datos, practicamente todo lo que hace Excel desde menus podia hacerlo yo con codigo), lo malo, que no tengo ni idea de donde he dejado ese codigo (soy un poco trasto ordenando mis cosas). Mientras lo busco, porque se que alguna vez me volvera a hacer falta, de momento para salir del paso me he hecho una clase muy simple usando POI. Aqui la dejo para quien le interese (es mejorable, claro, pero para 15 minutos de programacion que me ha llevado no esta mal). Nota: requiere las librerias de POI 3.5 (beta actualmente), no funciona con POI 3.2.

package nemesis;

import java.io.FileOutputStream;
import java.util.Vector;
import java.util.StringTokenizer;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

/**
 * Para generar una hoja Excel Simple
 *
 * @author jose
 *
 */
public class GenerarExcel {

	/**
	 * Para escribir el contenido de una celda.
	 *
	 * @param row Row.
	 * @param i posicion en la fila.
	 * @param value texto a escribir.
	 * @param style estilo de la celda.
	 */
	public static void createCell(Row row, int i, String value, CellStyle style) {
		Cell cell = row.createCell(i);
		value = value+" ";
		cell.setCellValue(value);
		// si no hay estilo, no se aplica
		if (style != null)
			cell.setCellStyle(style);
	}
	//-------------

	/**
	 * Crea una hoja Excel con el contenido especificado.
	 * @param v Vector con los datos a escribir en la hoja.
	 * @param namesheet nombre de la hoja.
	 * @param filename path del fichero donde se escribe.
	 */
	public static void crearExcel(Vector v, String namesheet, String filename)
			throws Exception {
		try {
			Workbook wb = new HSSFWorkbook();
			// Workbook wb = new XSSFWorkbook();
			CreationHelper createHelper = wb.getCreationHelper();
			Sheet sheet = wb.createSheet(namesheet);
			int filas = v.size();
			for (int i = 0; i < filas; i++) {
				String fila = (String) v.elementAt(i);
				StringTokenizer st = new StringTokenizer(fila, ",");
				Row row = sheet.createRow((short) i);
				int j = 0;
				while (st.hasMoreTokens()) {
					String token = st.nextToken();
					// para la cabecera, la primera fila, aplicamos un estilo (negrita y color de fondo azul)
					if (i == 0) {
						CellStyle style = wb.createCellStyle();
						style.setFillForegroundColor(IndexedColors.BLUE_GREY.getIndex());
						style.setFillPattern(CellStyle.SOLID_FOREGROUND);
						Font font = wb.createFont();
						// font.setFontHeightInPoints((short)10);
						font.setFontName("Courier New");
						// font.setItalic(true);
						// font.setStrikeout(true);
						font.setBoldweight(Font.BOLDWEIGHT_BOLD);
						font.setColor(IndexedColors.WHITE.getIndex());
						style.setFont(font);
						createCell(row, j, token, style);
					} else
						createCell(row, j, token, null);

					j = j + 1;

				}

			}

			// Asignar automaticamente el tamaño de las celdas en funcion del contenido
			for (int i = 0; i < filas; i++) {
				sheet.autoSizeColumn((short) i);
			}

			// Escribir el fichero.
			FileOutputStream fileOut = new FileOutputStream(filename);
			wb.write(fileOut);
			fileOut.close();

		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	// ------------------

	/**
	 * Para probar el correcto funcionamiento de la clase.
	 * @param args argumentos de entrada.
	 */
	public static void main(String[] args) {
		try {

			//Datos a escribir
			Vector v = new Vector();
			v.addElement("IDENTIFICADOR ,ID_CODIGO ,ESTADO ,DESCRIPCION");
			v.addElement("34567,CODIGO_00,Critica,Esto es un texto muy largo \r\n Esto es un texto muy largo");
			v.addElement("34568,CODIGO_01,Baja,Esto es un texto muy largo \r\n Esto es un texto muy largo");
			v.addElement("34569,CODIGO_02,Media,Esto es un texto muy largo \r\n Esto es un texto muy largo");

			// Generar el fichero
			GenerarExcel.crearExcel(v, "Ejemplo", "/home/jose/Escritorio/demo.xls");
			System.out.println("[ Generado fichero. ]");

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	// ----

}
// end of class GenerarExcel.java

Relacionado | Guia rapida de HSSF para escribir hojas de calculo

Reproduciendo videos con HTML 5, ¿Adios a Flash?

Espectacular video que veo en Bitelia y que muestra las capacidades de HTML 5 para reproducir video. El video puede redimensionarse, e incluso rotarse en tiempo de ejecucion. Os recuerdo que Firefox 3.5 (aun en version Beta) soporta HTML 5 y la reproduccion del formato abierto de video ogg. mmm, me estan dando ganas de instalar y probar la beta.

Breves

ubuntu-koala

* Destacado: 1,2,3…Ubuntu
* Lanzado KDE 4.3.0 Beta 2, con nombre clave “Crumping”
* VideoTutorial, Dolphin (emulador de Gamecube con wine) en Ubuntu
* MOC, musica en la consola
* Las novedades de Linux 2.6.30
* Temas a 1 click de distancia
* El asesino perfecto (ahora trailer en castellano)
* Primeras imagenes de Max Payne 3
* Como instalar Grub2 en Ubuntu Jaunty
* Lo que se viene en Ubuntu 9.10
* 87 Wallpapers de paisajes
* La tecnologia y tú

cambio

* Atmosphir, crea tus propias aventuras en 3D
* La diferencia entre Windows y Linux es esta
* Linux sera el primero en soportar USB 3.0
* Prueba Firefox 3.5 Beta 99 (Firefox 3.5 Preview)
* Lenceria sexy de Starwars y StarTrek (Guau!!!, se me cae la babilla)

corset-darthvader-satrwars

* Un gatito en tu techo, gratis

gatito

Ubuntu 9.04: Hay esperanza para los usuarios de Intel, Nuevos Intel Graphics Drivers

Hay esperanza para usuarios de Ubuntu con su tarjeta grafica Intel. El actual controlador 2D  resuelve la mayoria de los recientes problemas con los graficos de Intel, como comenta el desarrollador de Ubuntu Bryce Harrington en una lista de correo de desarrolladores.

Una molestia para los propietarios de Ubuntu 9.04 y los chips graficos de Intel han sido los problemas con los controladores graficos. Aunque Intel maneja sus controladores en un ejemplar modo de codigo abierto, la aceleración 2D y 3D ha dejado mucho que desear hasta ahora. La razon es un infeliz vinculacion del actual nucleo 2.6.28 Kernel Mode Setting (KMS) de Intel con la nueva aceleracion UXA de arquitectura EXA  que sustituye al Graphics Execution Manager (GEM) en el Kernel.

La solucion debe venir con el driver de Intel 2.7.99.1 , como el desarrollador de Canonical Bryce Harrington describe en la lista de correo de desarrolladores de Ubuntu. El todavia algo inestable driver 2D debe solucionar la mayoria de los problemas de chips de Intel, con la version estable del driver que aparecera mas tarde en Ubuntu 9.10.

Harrington  menciona tambien que los usuarios de Jaunty tienen la ventaja de poder instalar el kernel 2.6.30 para resolver el problema. Los Ubuntu source packets se encuentran disponibles en la pagina web de kernel.ubuntu.com. Harrington sugiere activar el modulo UXA en el archivo xorg.conf, pero no KMS, que esta desactivado por defecto. Para activar UXA, utilice la opción AccelMethod “EXA”, en la seccion “Device” en / etc/X11/xorg.conf.

Instalar el controlador actualizado 2D, sin embargo, debera ir acompañada con la versión estable del driver Intel 2.7.1 Intel que puede obtenerse a partir de un paquete externo personal  (PPA). El nombre del paquete es xserver-xorg-video-intel . Cuidado, sin embargo: jugar con Xorg puede tener efectos secundarios adversos, por lo que hacer copias de seguridad de los archivos originales pueden ser una buena idea.

Original de | Linux Magazine



The next version of Ubuntu is coming soon


¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map
junio 2009
L M X J V S D
« may   jul »
1234567
891011121314
15161718192021
22232425262728
2930  

Blog Stats

  • 26,810,207 hits

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 1.042 seguidores