yyyy reconoce que ingles formato fechas fecha evitar español cómo como cambie cambiar automaticamente arreglar javascript excel date activex format

javascript - reconoce - formato fecha excel



¿Cómo personalizar el formato de fecha al crear celdas de Excel a través de javascript(activexobject)? (5)

Estoy tratando de convertir una tabla HTML a Excel en Javascript usando el nuevo ActiveXObject("Excel.application") . Básicamente, recorro las celdas de la tabla e inserto el valor en la celda correspondiente en excel:

//for each table cell oSheet.Cells(x,y).value = cell.innerText;

El problema es que cuando la celda está en formato de fecha de ''dd-mm-aaaa'' (por ejemplo, 10-09-2008), Excel leería como ''mm-dd-aaaa'' (es decir, 09 de octubre de 2008). Traté de especificar NumberFormat como:

oSheet.Cells(x,y).NumberFormat = ''dd-mm-yyyy'';

Pero no tiene ningún efecto. Parece que esto solo afecta la forma en que Excel muestra el valor, no el análisis . Mi única solución ahora es cambiar la fecha como:

var txt = cell.innerText; if(/^(/d/d)-(/d/d)-/d/d/d/d$/.test(txt)) txt = txt.replace(/^(/d/d)-(/d/d)/,''$2-$1'');

Pero me preocupa que no sea genérico y una configuración diferente de la máquina fallaría.

¿Hay alguna manera de especificar cómo analizar el valor de entrada?


Puede evitar el análisis de fecha de Excel ingresando los datos usando su formato de fecha ''serial'' nativo. por ejemplo, "22 de diciembre de 2008" es 39804 como fecha de serie de Excel. (Vea aquí para una buena explicación de estos)

Luego formatee la celda como lo hacía antes.


  1. determinar qué formatos de fecha neutral para cultura son compatibles con Excel

  2. use javascript para analizar su cadena de fecha y salida en el formato apropiado

No sé qué formatos admite Excel pero querría algo como el viaje de ida y vuelta o los formatos ordenables de .net , donde siempre se leerá de forma coherente.

para # 2, si puedes confiar en javascript para construir una fecha apropiada de cualquier cadena que alimentes, está bien. si no está seguro de eso, puede consultar una biblioteca como datejs, donde puede ser más específico sobre lo que quiere que suceda.


Probé tu código, pero al final del proceso volví a aplicar el formato a las columnas que contenían fechas. Funciona bien, no importa qué idioma local haya configurado su máquina.

Siendo mi objeto excel definido como ''plantilla'', tan pronto como obtuve los datos llenados, solicité (solo por ejemplo):

template.ActiveSheet.Range("D10:F99").NumberFormat = "dd/MMM/yyyy;@";

atentamente


En Vbscript, utilizamos para resolver esto por

If IsDate ( Cell.Value ) Then Cell.Value = DateValue ( Cell.Value ) End If

Tal vez, en el script java también necesitas jugar con el mismo enfoque.


En lugar de

oSheet.Cells(x,y).NumberFormat = ''dd-mm-yyyy'';

establece esto:

oSheet.Cells(x,y).NumberFormat = 14;