web-dev-qa-db-fra.com

Exporter un tableau HTML vers Excel Fonction JavaScript ajouter un nom de fichier sélectionné

J'ai la fonction suivante qui exporte un fichier HTML vers Excel:

function generateexcel(tableid) {
  var table= document.getElementById(tableid);
  var html = table.outerHTML;
  window.open('data:application/vnd.ms-Excel,' + encodeURIComponent(html));
}

Le problème est que, je ne peux pas mettre un nom de fichier spécifique à sauvegarder car l'utilisateur obtient quelque chose comme:

Voulez-vous enregistrer le fichier% 3Ctable% 20id% 3D% 22tableRslts% 22% 20tabindex% 3D% 2235% 22% 20?

Et le fichier sauvegardé est comme:

IytvT8Jo.xls.part.xls (au moins dans Firefox qui est le navigateur cible que nous utiliserons)

Comment régleriez-vous cela?

13
VSP

Vous pouvez examiner deux options:

  • Filesaver API est la nouvelle fonctionnalité 'HTML5' permettant/exactement/ceci. Il y a juste un petit problème: la partie pertinente n'est pas encore prise en charge dans Firefox. Si vous voulez utiliser ceci, il existe une bibliothèque de wrapper Nice qui vous facilite la tâche: filesaver.js
  • Downloadify est un outil flash spécialement conçu pour cela, vous pouvez le trouver ici. ('Inconvénient': flash)
3
David Mulder

Je ne sais pas si vous l'avez déjà fait. Vous pourriez avoir besoin de gérer quelque chose comme ceci ci-dessous dans votre page aspx:

$(window).load(function(){
$( "#clickExcel" ).click(function() {  
var dtltbl = $('#dtltbl').html();    `enter code here`
window.open('data:application/vnd.ms-Excel,' + $('#dtltbl').html());
});
});//]]>  

Dans le script ci-dessus, #dtltbl est l'identifiant de la table.

Le code suivant doit être présent dans votre code côté serveur, votre problème sera alors résolu.

           Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv");
1
Siva Karthikeyan