Encontramos la solución a esta dificultad, al menos eso creemos. Si presentas inquietudes puedes dejarlo en el apartado de comentarios, que con gusto te ayudaremos
Solución:
El 12 de julio de 2016, Microsoft lanzó una actualización de seguridad para Microsoft Office. Uno de los efectos de esta actualización fue evitar que Excel abriera archivos HTML de dominios no confiables, ya que no se pueden abrir en modo protegido.
TAMBIÉN hay una configuración de registro que evita que Excel abra archivos con la extensión de archivo .XLS cuyo contenido no coincida con el formato de archivo XLS oficial, aunque por defecto es “advertir”, no “negar”.
Antes de este cambio, era posible guardar datos HTML en un archivo con una extensión XLS, y Excel lo abriría correctamente, posiblemente dando una advertencia primero de que el archivo no coincidía con el formato de Excel, dependiendo del valor del usuario para el ExtensionHardening
registro key (o valores de configuración relacionados).
Microsoft ha realizado una entrada en la base de conocimientos sobre el nuevo comportamiento con algunas soluciones alternativas sugeridas.
Varias aplicaciones web que anteriormente dependían de la exportación de archivos HTML como XLS han tenido problemas como resultado de la actualización; SalesForce es un ejemplo.
Es probable que las respuestas anteriores al 12 de julio de 2016 a esta y otras preguntas similares no sean válidas.
Vale la pena señalar que los archivos generados EN EL NAVEGADOR a partir de datos remotos no entran en conflicto con esta protección; solo impide la descarga de archivos de una fuente remota que no es de confianza. Por lo tanto, un posible enfoque es generar el archivo HTML con la etiqueta .XLS localmente en el cliente.
Otro, por supuesto, es producir un archivo XLS válido, que Excel luego abrirá en modo protegido.
ACTUALIZAR: Microsoft ha lanzado un parche para corregir este comportamiento: https://support.microsoft.com/en-us/kb/3181507
SheetJS parece perfecto para esto.
Para exportar su tabla como un archivo de Excel, use el código en este enlace (junto con SheetJS)
Simplemente conecte su table
ID del elemento en export_table_to_excel
Ver demostración
Si el formato CSV le conviene, aquí tiene un ejemplo.
- Ok … acabo de leer un comentario en el que dices explícitamente que no es bueno para ti. Mi mal por no aprender a leer antes de codificar.
Hasta donde yo sé, Excel puede manejar CSV.
function fnExcelReport()
var i, j;
var csv = "";
var table = document.getElementById("table");
var table_headings = table.children[0].children[0].children;
var table_body_rows = table.children[1].children;
var heading;
var headingsArray = [];
for(i = 0; i < table_headings.length; i++)
heading = table_headings[i];
headingsArray.push('"' + heading.innerHTML + '"');
csv += headingsArray.join(',') + ";n";
var row;
var columns;
var column;
var columnsArray;
for(i = 0; i < table_body_rows.length; i++)
row = table_body_rows[i];
columns = row.children;
columnsArray = [];
for(j = 0; j < columns.length; j++)
var column = columns[j];
columnsArray.push('"' + column.innerHTML + '"');
csv += columnsArray.join(',') + ";n";
download("export.csv",csv);
//From: http://stackoverflow.com/a/18197511/2265487
function download(filename, text)
var pom = document.createElement('a');
pom.setAttribute('href', 'data:text/csv;charset=utf-8,' + encodeURIComponent(text));
pom.setAttribute('download', filename);
if (document.createEvent)
var event = document.createEvent('MouseEvents');
event.initEvent('click', true, true);
pom.dispatchEvent(event);
else
pom.click();
Call this function on
Head1
Head2
Head3
Head4
11
12
13
14
21
22
23
24
31
32
33
34
41
42
43
44
Puedes animar nuestro quehacer escribiendo un comentario o puntuándolo te damos las gracias.