2010-07-20 8 views

Respuesta

26

Creo que estás malentendido la respuesta a la pregunta que está conectado, se sugiere que utilice un URI de datos para la exportación.

Excel es un objetivo algo complicado de apuntar ya que el formato de archivo es en sí mismo binario (or OOXML). Si solo desea algo que abre en Excel, entonces puede exportar el CSV más sencillo como un URI de datos. El siguiente código es un poco tosco y sólo se ha probado en Firefox:

function exportData() { 
    var data = ''; 
    for (var i=1;i<=2;i++) { 
     var sep = ''; 
     for (var j=1;j<=4;j++) { 
      data += sep + document.getElementById(i + '_' + j).value; 
      sep = ','; 
     } 
     data += '\r\n'; 
    } 
    var exportLink = document.createElement('a'); 
    exportLink.setAttribute('href', 'data:text/csv;base64,' + window.btoa(data)); 
    exportLink.appendChild(document.createTextNode('test.csv')); 
    document.getElementById('results').appendChild(exportLink); 
} 

Aquí está el marcado de página:

<input type="number" id="1_1" value="2">, 
<input type="number" id="1_2" value="1">, 
<input type="number" id="1_3" value="4">, 
<input type="number" id="1_4" value="3"> 
<br> 
<input type="number" id="2_1" value="1">, 
<input type="number" id="2_2" value="2">, 
<input type="number" id="2_3" value="3">, 
<input type="number" id="2_4" value="4"> 
<br> 
<button onclick="exportData()">Export as CSV</button> 
<div id="results"></div> 

Demo here. Haga clic en el botón que obtiene un enlace, haga clic en el enlace y obtendrá un archivo. Cambie los valores, haga clic en el enlace nuevamente y obtendrá un archivo diferente. Firefox me hizo seleccionar Excel cada vez para abrirlo, pero no sé si esa es mi configuración o un problema general.

CSV in Excel 2007 http://www.boogdesign.com/images/external/data-uri-csv.png

Como he dicho, sólo probado en Firefox, y que sólo funcionará en los navegadores que soportan Data URIs. También necesita window.btoa() function o implementar su propio base64 encoder.

+0

Interesante. Cuando abro el resultado en Excel obtengo dos celdas, A1 ('2,1,4,3') y A2 ('1,2,3,4'). Por lo tanto, reconoce filas pero no columnas. Sin embargo, gracias por comenzar (y tiene razón acerca de la pregunta vinculada, no es la respuesta correcta para la exportación) –

+1

@AlexMcp ¿Tal vez depende de qué versión de Excel esté usando? He agregado una captura de pantalla de lo que estoy viendo en Excel 2007 – robertc

+0

Wow, es tan bueno saber sobre esto. Gracias :-) –

2

No conozco ninguna biblioteca de Javascript que pueda crear un archivo de Excel. Pero simplemente podría exportarlo como HTML o CSV. Tenga en cuenta que Javascript no puede crear archivos (aún), pero el borrador de HTML sirve para esto: http://www.w3.org/TR/file-writer-api/

Excel es bastante bueno para leer tablas en HTML, por lo que podría simplemente hazlo y abre el archivo HTML con Excel.

Se puede crear un archivo para descargar usando Downloadify: https://github.com/dcneiner/Downloadify

+3

Estoy pensando en hacer que el usuario copie/pegue. Este no es un producto comercial, solo una utilidad, entonces tal vez está bien preguntar a la gente. Esperaba una API de HTML5 whizbang que ... No sé, hice magia o algo ... –

+0

+1 para solicitar magia :) – technomalogical

+0

Si cambia su enfoque hacia el lado del servidor, puede generar un tipo MIME personalizado de tu elección. CSV es una forma simple de exportar datos a Excel. –

Cuestiones relacionadas