2009-10-06 10 views
1

J'essaie d'exporter des données XML d'une page Web vers une feuille de calcul en utilisant javascript. Jusqu'à présent, je viens d'essayer le très simple:Exportation d'une feuille de calcul XML vers Excel en utilisant Javascript/classic-ASP

Sub Export 
    Response.ContentType = "application/vnd.ms-excel" 
    <script>    
     var XML = document.getElementById("xmldata");    
     window.open(XML); 
    </script> 
End Sub 

Cette tente d'ouvrir le fichier XML comme une feuille de calcul Excel, mais il ne s'ouvre pas parce qu'il a des caractères non valides. J'ai retrouvé ces personnages et le principal coupable a tendance à être le tiret horizontal "-". Il peut y avoir d'autres caractères non valides, mais si je les supprime manuellement, le fichier XML s'ouvre correctement.

Comment procéder pour formater le contenu XML pour supprimer ou remplacer les caractères non valides à afficher correctement pour exceller? La feuille XML est construite à partir de champs dans une base de données, dois-je la formater comme elle est construite ou la mettre en forme avec javascript? J'essaie de trouver la solution la plus simple possible car je suis relativement nouveau dans la programmation web. En outre, j'utilise ASP/VBScript classique.

+0

Le code dans votre question n'a aucun sens, est-ce vraiment le code que vous avez? – AnthonyWJones

+0

Peut-être que je devrais clarifier le problème, mais oui, ne pas tenir compte de ce code. J'ai un îlot de données XML qui est construit à l'intérieur de la page Web. Je veux obtenir ces données XML et les exporter vers Excel sans les caractères invalides qu'il contient. – marekc

Répondre

1

réussi à le résoudre en obtenant la sortie de la table HTML à partir des données XML puis mettre cela dans Excel à l'aide ActiveX.

var x=listingTable.rows 

var xls = new ActiveXObject("Excel.Application") 
xls.visible = true 
xls.Workbooks.Add 

for (i = 0; i < x.length; i++) 
{ 
    var y = x[i].cells 

    for (j = 0; j < y.length; j++) 
    { 
     xls.Cells(i+1, j+1).Value = y[j].innerTex 
    } 
} 
0

Vous avez une incohérence dans le codage des caractères. Le client suppose probablement le codage de caractères UTF-8, mais vous envoyez à partir du serveur un codage ANSI tel que Windows-1252.

Vous devez vous assurer que le client sait que le serveur envoie Windows 1252 en utilisant Response.CharSet = "Windows-1252" dans votre code côté serveur et comprenant les éléments suivants au début de votre xml: -

<?xml version="1.0" encoding="Windows-1252" ?> 

Alternativement, si vous êtes en utilisant Response.Write pour envoyer le contenu XML, vous pouvez utiliser: -

Response.Codepage = 65001 
Response.CharSet ="UTF-8" 
+0

Merci pour la suggestion. Bien que j'utilise un îlot de données XML, je ne pense pas que je puisse définir la version XML et l'encodage comme ça (au moins, ça ne fonctionnait pas pour moi quand j'ai essayé) et je ne pense pas pouvoir y accéder l'îlot de données de VBScript (encore une fois, cela peut être correct ou non - j'ai littéralement plongé dans la programmation web) – marekc

Questions connexes