Exportation de XML à partir d'Excel et maintien du format de date

De nombreux messages de StackOverflow et d'autres forums en ligne ont des questions similaires à celles-ci, mais aucun d'eux ne résout vraiment le problème que j'ai.

J'exporte un fichier XML à partir d'Excel. Le fichier Excel contient des dates. Dans le fichier XML, cependant, ces dates apparaissent comme des nombres entiers – la date est faite pour être le n ° jour depuis 1/0/1900, je crois.

J'utilise JavaScript pour extraire les données du fichier XML pour remplir une table dans une page Web.

Je soupçonne qu'une solution pourrait se présenter sous deux formes différentes: 1. Une manière de convertir, en JavaScript, l'entier à la date qu'il représente. 2. Une façon de forcer le fichier XML à prendre une date formatée à partir du fichier Excel.

Je suis clairement un novice avec XML et JavaScript, donc votre aide serait sincèrement appréciée. Merci.

Le format Excel utilise pour xml-export dépend du schéma XML ajouté. Cela peut être explicitement créé et ajouté ou – comme je le soupçonne dans votre cas – a été implicitement / automatiquement généré par Excel.

Dans mon exemple, j'ai deux colonnes, la première a via XML-Schema pour formater date-heure, la seconde est un texte normal et uniquement pour la représentation dans Excel (format de colonne) d'une date.

Capture d'écran d'une feuille excel avec deux colonnes contenant toutes les dates

Lorsque j'exporte ceci comme XML, j'ai deux résultats apparemment complètement différents:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <dataroot> <Tabelle11> <Title_1>2009-10-12T00:00:00.000</Title_1> <Title_2>40098</Title_2> </Tabelle11> <Tabelle11> <Title_1>2000-01-01T00:00:00.000</Title_1> <Title_2>36526</Title_2> </Tabelle11> </dataroot> 

Lorsque je vérifie le schéma XML (par exemple avec "Debug.Print ActiveWorkbook.XmlMaps (1) .Schemas (1) .XML") Je vois la différence (seul extrait, pas le fichier complet):

 <xsd:element name="Title_1" minOccurs="0" od:jetType="datetime" od:sqlSType="datetime" type="xsd:dateTime"> <xsd:annotation> <xsd:appinfo> <od:fieldProperty name="Format" type="10" value="dd.mm.yyyy"/> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element name="Title_2" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar"> <xsd:annotation> <xsd:appinfo> <od:fieldProperty name="Format" type="10" value="@"/> </xsd:appinfo> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="255"/> </xsd:restriction> </xsd:simpleType> </xsd:element> 

La première colonne est dans le schéma de format datetime, la seconde est varchar. Encore une fois, vous ne savez peut-être pas toujours comment Excel gère vos données XML, puisque ce schéma est généré automatiquement (si je me souviens bien dans Excel 2003, il y avait un message indiquant qu'un schéma avait généré pour vous)

Maintenant, comment procéder – surtout dans un fichier existant: j'essayerais d' extraire le schéma XML (voir ci-dessus), enregistrez-le comme quelque chose.xsd, adaptez le schéma selon vos besoins et importez ce nouveau schéma. Bummer est-ce que vous devez définir le mappage à nouveau (ou essayez ceci: Excel 2007 XML Source Maps – Refreshing Schemas ). Souvent, j'ai laissé MS Access générer mon XML-Schema, c'est-à-dire générer le tableau requis, insérer certaines valeurs et exprt le tableau comme XML (cocher l'option pour ajouter le schéma).

J'espère que ce schéma général vous donnera une idée de la façon de procéder.

Cordialement

Andreas

C'est en fait assez simple … si vous créez votre propre «schéma» par exemple. Créez un fichier xml et indiquez que vous disposez de données Google Analytics pour remplir votre fichier xml complet avec chaque ligne ayant les trois points de données suivants:

 <date>1/1/2012</date> <page>mywebsite.com</page> <visits>100000</visits> 

Lorsque vous importez ce fichier xml comme schéma de carte de données pour Excel avant d'exporter, vous allez terminer l'entier que vous décrivez ci-dessus. Toutefois, si vous définissez ce schéma plutôt que:

 <date>2012-01-01</date> <page>mywebsite.com</page> <visits>100000</visits> 

Excel affichera un groupe supplémentaire pour l'élément de date lorsque vous organisez votre xml sur la feuille. Utilisez la valeur (pas le format ()) comme l'en-tête de colonne, et votre exportation sera la date mise en forme au lieu de l'entier. Vous n'avez pas besoin de faire une extraction spéciale .xsd d'excel ou d'accès!

Pour un exemple de la construction de votre propre schéma, j'ai trouvé cette vidéo sur place: http://www.youtube.com/watch?v=9bat12gH3Qs