tableToExcel jQuery jette étrange erreur dans IE
Je suis l'aide d'une fonction jQuery pour exporter ma table HTML pour Excel. C'est une fonction que j'ai vu utilisé dans beaucoup d'autres endroits, et il fonctionne très bien pour moi dans Chrome:
var tableToExcel = (function() {
var uri = 'data:application/vnd.ms-excel;base64,'
, template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>'
, base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
, format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) }
return function(table, name) {
if (!table.nodeType) table = document.getElementById(table)
var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }
window.location.href = uri + base64(format(template, ctx))
}
})()
Toutefois, dans IE 10, cette ligne: "de la fenêtre.emplacement.href = uri + base64(format(modèle, ctx))" - est en train de jeter l'erreur: "SCRIPT122: La zone de données passée à un appel système est trop petit."
J'ai fait un peu de recherche et il semble que IE n'est pas capable de gérer la longueur de l'URI pour une raison quelconque. Existe-il des solutions?
résolu ici :- stackoverflow.com/questions/27039474/...
OriginalL'auteur JMax2012 | 2013-09-04
Vous devez vous connecter pour publier un commentaire.
Toi, mon ami, sont en grande difficulté ( blague )!
Le principal problème avec les anciennes versions d'IE qui est le support de l'encodage base64 qui peuvent être pris en charge à l'aide de cette bibliothèque Javascript.
Mais le principal problème est que les Données Schéma d'URL qui est disponible sur les navigateurs basés sur WebKit et vous pouvez l'avoir sur c'est à dire basée sur RCA 2397. Il dispose d'une fonctionnalité limitée et travaille essentiellement pour les images et les css.
Ici un lien utile.
Aussi assurez-vous de lire la page de Wikipedia pour Les données de Schéma d'URL
**Dès maintenant à en parler sur les solutions de contournement! **
La solution principale est la rédaction d'un côté serveur un script qui crée le fichier Excel et que vous utilisez simplement un appel Ajax pour envoyer à l'utilisateur! vous pouvez même stocker ce fichier sur votre serveur de système de fichiers
et juste envoyer l'adresse de ce fichier.
Mais si vous êtes en mettant principalement l'accent sur le côté client et vous avez vraiment besoin de travailler sur IE, vous devez utiliser un téléchargement de la bibliothèque, de préférence ceux qui ont swf (Flash), voici un que je n'ai pas encore utilisé, mais je suis l'espoir d'obtenir le résultat que vous recherchez. Il y a des revendications qui downloadify le fait bien et laissez-moi savoir comment ça se passe!
Je n'ai toujours pas de travail, même avec la nouvelle bibliothèque Javascript. J'ai fini d'écrire deux à l'exportation-à-fonctions excel (un à l'aide d'ActiveX) et de les appeler basé sur le type de navigateur.
En fait je l'ai essayé et cela a fonctionné! J'ai utilisé Downloadify à partir de github. Le code que j'ai écrit va aller vivre bientôt, je pourrais être en mesure de partager le lien avec vous.
Merci pour la réponse, j'ai utilisé github.com/eligrey/FileSaver.js pour résoudre le problème. Voir stackoverflow.com/a/20151856/2049986 pour voir comment on change une chaîne base64 pour un blob.
OriginalL'auteur pouyanghasemi