duda con jexcel

estoy trabajando con la libreria jexcel todo esta m uy bien pero, al momento de crear un archivo excel me limita para darle formato entonces lo que hice fue crear una plantilla con formato base en excel y solamente setearle los datos que requiero pero no me respetan el formato de mi plantilla excel me gustaria saber si hay alguna manera de dar un formato mas definido desde java y la libreria o que me recomendarian y tambien cuando lo ejecuto tampoco me respeta los acentos de mi plantilla....

saludos espero alguien pueda ayudarme

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Nopalin

Un ejemplo

Claro que lo hay, aqui te pego parte de un código que tengo para hacer eso, lo malo que si es medio resbucado:

WritableWorkbook workbook = Workbook.createWorkbook(file);//creas el workbook
WritableSheet sheet = workbook.createSheet("Hoja 1", 0); //creas la hoja 0 en el woorkbook

//defines varios tipos de font
WritableFont titleFont = new WritableFont(WritableFont.ARIAL, 14, WritableFont.BOLD);
WritableFont subtitleFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD);
WritableFont headersFont = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD);
WritableFont textFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD);

//definimos un formato con el font de titulo
WritableCellFormat titleFormat = new WritableCellFormat(titleFont);

//definimos un formato con el font de subtitulo
WritableCellFormat subtitleFormat = new WritableCellFormat(subtitleFont);

//definimos un formato con el font de cabeceras, mas el fondo de color verde claro
WritableCellFormat headerFormat = new WritableCellFormat(headersFont);
headerFormat.setBackground(Colour.LIGHT_GREEN);

//definimos un formato con el font para texto
WritableCellFormat textFormat = new WritableCellFormat(textFont);

//definimos un formato de tipo numerico y le asignamos el font de texto
WritableCellFormat numberFormat = new WritableCellFormat(new NumberFormat("###,###,##0.00"));
numberFormat.setFont(textFont);

//definimos un formato numerico donde mostrara solo los dos primeros digitos enteros de un número
//y le asignamos el font de textp
WritableCellFormat porcentajeFormat = new WritableCellFormat(new NumberFormat("00"));
porcentajeFormat.setFont(textFont);

//definimos un formato de fecha y le asignamos el font de texto
WritableCellFormat dateFormat = new WritableCellFormat(new DateFormat("dd/MM/yyyy"));
dateFormat.setFont(textFont);

//para pasarle el formato a una celda lo haces en el constructor de algun tipo de celda en especifico
sheet.addCell(new Label(2, row++, "TEXTO 1", titleFormat));
sheet.addCell(new Label(2, row++, "TEXTO 2", subtitleFormat));
sheet.addCell(new Label(2, row++, "TEXTO 3", headerFormat));
sheet.addCell(new Label(2, row++, "TEXTO 4", textFormat));
sheet.addCell(new jxl.write.Number(col++, row, 123123.23d, numberFormat));
sheet.addCell(new jxl.write.Number(col++, row, 23d, porcentajeFormat));
sheet.addCell(new jxl.write.DateTime(col++, row, new Date(), dateFormat));

workbook.write();
workbook.close();

Incluso si checas la api, puedes cambiar el color del texto, mergear celdas, cambiar los borders... etc

sobres

Imagen de neko069

Orale, eso mismo hacía yo con

Orale, eso mismo hacía yo con Apache POI, y por el ejemplo, es bastante similar....

Error al tratar de obtener una fecha del excel

Hola tengo una duda con respecto al la lectura de datos del tipo Fecha.
Por ejemplo yo tengo un Excel en el cual 2 columnas son fechas, pero a la hora de leerlas y pasarlas a un arreglo bidimencional de String la fecha se corta.

por ejemplo

FechaInicio | FechaFin |

01/11/2014 | 01/11/2014 |
01/11/2014 | 02/11/2014 |

a la hora de pasarlos a un arreglo de esta forma

String [][]datos ;
Workbook libro;

libro = Workbook.getWorkbook(archivo);
Sheet hoja1 = libro.getSheet(0);

datos=new String[hoja1.getRows()][hoja1.getColumns()];

//---------------------------------------------------------------------------------------------------------
for(int fila=2 ;fila < hoja1.getRows();fila++){
for(int columna=0; columna < hoja1.getColumns();columna++){
datos[fila][columna]=hoja1.getCell(columna,fila).getContents();
System.out.println(datos[fila][columna]);
nomcolumnas[columna]=" ";
}
}
// -------------------------------------------------------------------------------------------------------

pero a la hora imprimirlo sale el siguiente formato:

1/11/14 | 1/11/14 |
1/11/14 | 2/11/14 |

Cabe mencionar que le hice un debbug para saber si me estaba trayendo correctamente la fecha y realmente
lo que me trae es la fecha cortada, no se si deba de obtener el contenido de la celda con otros metodos.


Hasta ahora para resolverlo le he cambiado el tipo de Celda Pero al EXCEL a tipo texto y entonces me toma bien la fecha, pero no es lo que deseo, espero y me puedas ayudar

Re: Java Excel API y fechas

Hasta ahora para resolverlo le he cambiado el tipo de Celda Pero al EXCEL a tipo texto y entonces me toma bien la fecha, pero no es lo que deseo, espero y me puedas ayudar

Quizás si adaptas esta solución que aparece en StackOverflow te tome bien la fecha y sea lo que deseas. ;)

~~~

Gracias me funciono muy bien.

Gracias por la solucion, lo adapte de la siguiente forma:

for(int fila=2;fila < hoja1.getRows();fila++){
for(int columna=0;columna < hoja1.getColumns();columna++){
datos[fila][columna]= getContenido(hoja1.getCell(columna,fila));
//datos[fila][columna]=hoja1.getCell(columna,fila).getContents();
nomcolumnas[columna]=" ";
}
}

public String getContenido(jxl.Cell celda){
jxl.write.DateTime aux = null;
if(celda.getType() == jxl.CellType.DATE){
aux = (DateTime) celda;
SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy");
return sdf.format(aux.getDate());
}
else{
return celda.getContents();
}
}