He estado usando Apache POI durante algún tiempo para leer los archivos existentes de Excel 2003 mediante programación. Ahora tengo un nuevo requisito para crear archivos .xls completos en memoria (aún usando Apache POI) y luego escribirlos en un archivo al final. El único problema que se interpone en mi camino es el manejo de celdas con fechas.
Considere el siguiente código:
Date myDate = new Date();
HSSFCell myCell;
// code that assigns a cell from an HSSFSheet to 'myCell' would go here...
myCell.setCellValue(myDate);
Cuando escribo el libro de trabajo que contiene esta celda en un archivo y lo abro con Excel, la celda se muestra como un número. Sí, me doy cuenta de que Excel almacena sus 'fechas' como el número de días desde el 1 de enero de 1900 y eso es lo que representa el número en la celda.
PREGUNTA: ¿Qué llamadas API puedo usar en POI para decirle que quiero que se aplique un formato de fecha predeterminado a mi celda de fecha?
Idealmente, quiero que la celda de la hoja de cálculo se muestre con el mismo formato de fecha predeterminado que Excel le habría asignado si un usuario hubiera abierto manualmente la hoja de cálculo en Excel y hubiera escrito un valor de celda que Excel reconoció como una fecha.
fuente
BuiltinFormats
que enumera todos los formatos estándar (no solo los formatos de fecha) que conoce Excel. Me quedo con uno de esos para usar como mi parámetro para elgetFormat()
método que se muestra en el fragmento de arriba.getCreationHelper()
se necesita? Estoy trabajando con Mule en este momento para generar un archivo de salida de Excel y, de hecho, pude usar elcreateDataFormat()
sin el asistente de creación y generé un archivo de Excel en mi prueba. ¿Hay alguna desventaja de no usarlo? ¡Gracias!mm/dd/yyyy
. Cuando uso cualquier otro formato, Excel muestra un errorFile error, some number formats may have been lost
, muestra elDate
tipo en Excel. No tengo ni idea de cómo se puede solucionar esto.