2012-06-18 15 views
13

He la siguiente función que exporta un archivo HTML para sobresalir:tabla de exportación a HTML Excel función JavaScript añadir seleccione el nombre del archivo

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

El problema es que, no puedo poner un nombre de archivo específico para guardar como entonces el usuario obtiene algo como:

¿Desea guardar% 3Ctable% 20id% 3D% 22tableRslts% 22% 20tabindex% 3D% 2235% 22% 20 file?

Y el archivo guardado es como:

IytvT8Jo.xls.part.xls (al menos en Firefox que es el navegador de destino Utilizaremos)

¿Cómo puede solucionar esto?

+0

¿Es realmente cierto que Excel importará directamente una tabla HTML? De todos modos, ha intentado darle un nombre a la ventana (el segundo parámetro es 'window.open()'? (* Edit * well gnumeric consumirá una tabla felizmente, así que supongo que Excel también lo hará.) Huh) – Pointy

+0

Debe ser cierto si ya estoy usando este script: P si no tengo un gran problema con las manos ... sobre el nombre de la ventana lo intenté ahora sin éxito, pero gracias por la sugerencia de todos modos ... – VSP

+0

No [esto] (http://stackoverflow.com/questions/1479020/save-the-document-generated-by-javascript) help? –

Respuesta

3

Hay dos opciones que se podía mirar en:

  • Filesaver API es nueva funcionalidad 'HTML5' permitiendo/exactamente/esto. Solo hay un pequeño problema: la parte relevante aún no se admite en Firefox. Si desea utilizar esto, hay una buena biblioteca de envoltura que hace que esto sea más fácil para usted: filesaver.js
  • Downloadify es una herramienta flash que se crea exactamente para esto, puede encontrarla aquí. ('Desventaja': flash)
+0

Probé la página de demostración de filesaver.js, funcionó bien con Chrome, en firefox (14.0.1) solo abrió una nueva pestaña con los contenidos ... y al ser Firefox nuestra plataforma de destino ... Downloadify funcionó bien en firefox, pero tendré que intentar implementarlo en nuestro sitio web para ver si es factible (asp.net + ajax.net + hay varias tablas a las que agregamos la exportación como botón de Excel al lado de cada una de forma dinamica mediante javascript) – VSP

+0

Sí, es por eso que dije 'la parte relevante aún no está soportada en Firefox' @ filesaver. Pero por lo que sé, la descarga debe funcionar perfectamente bien. –

1

No estoy seguro de si ya ha hecho esto. Puede que tenga que manejar algo como esto más adelante en su página aspx:

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

En el #dtltbl script anterior es el ID de la tabla.

El siguiente código debe estar allí en el código del lado del servidor, entonces su problema se resolverá.

  Response.AddHeader("Content-Disposition", "attachment;filename=myfilename.csv"); 
+0

También verifique [este enlace] (http://stackoverflow.com/questions/393647/response-content-type-as-csv) podría ser útil para usted. –

+0

El problema con esto es que debe realizar una devolución de datos al servidor para agregar el encabezado. La idea de usar esta función es generar el excel del cliente directamente a través de javascript – VSP

+0

Esto le da una aplicación justa para manejar la exportación sin el código del lado del servidor, vea si cumple con sus requisitos http: // stackoverflow.com/questions/3286423/is-it-possible-to-use-any-html5-fanciness-to-export-local-storage-to-excel –

Cuestiones relacionadas