Intentando analizar y el archivo XLSX usando roo gem en un script de ruby.Cómo convertir la fecha de MS Excel del formato float to date en Ruby?
En Excel, las fechas se almacenan como flotantes o enteros en el formato DDDDD.ttttt, contando desde 1900-01-00 (00 no 01)
. Entonces, para convertir una fecha como 40396, tomaría 1900-01-00 + 40396
y debería obtener 2010-10-15, pero recibiré el 2010-08-08.
estoy usando active_support/hora para hacer el cálculo de este modo:
Time.new("1900-01-01") + 40396.days
Estoy haciendo mi mal cálculo o hay un error en el apoyo activo?
estoy corriendo rubí 1.9.3-MRI en Windows 7 + última joya active_support (3.2.1)
EDITAR
que estaba buscando en el archivo antiguo en Excel con los datos equivocada - Mi script/consola estaba sacando los datos correctos - de ahí mi confusión - ¡Estaba haciendo todo bien, excepto por usar el archivo correcto! ¡Malditos los nighters!
Gracias a todos los que respondieron, voy a mantener la pregunta aquí en caso de que alguien necesita información sobre cómo convertir las fechas de excel utilizando ruby.
También para cualquier otra persona que se encuentre con esto: la gema de la hoja de cálculo NO es compatible con la lectura de archivos XLSX en este punto (v 0.7.1), así que estoy usando roo para leer y axlsx para escribir.
La compatibilidad se extiende hasta 1/1/1900, porque el calendario de Excel también tiene 1900 como año bisiesto. – phoog
Bastante justo, @phoog, ya que la pregunta se refiere específicamente a Excel, pero mencioné otras hojas de cálculo también, y no extienden su compatibilidad tan lejos. Ruby tampoco, por supuesto. Entonces efectivamente, el día 0 todavía es 1899-12-30. –
Simplemente ignore todo - estaba confundido - porque en mi script estaba sacando el archivo correcto, pero en Excel tenía un archivo más viejo abierto con la fecha incorrecta. !!!!! Aún así gracias por responder. – konung