2010-06-01 10 views
9

Tengo algunos datos tabulares eliminados de la pantalla que deseo exportar a un archivo CSV (actualmente solo lo estoy colocando en el portapapeles), ¿hay alguna forma de hacerlo en Greasemonkey? ¿Alguna sugerencia sobre dónde buscar una muestra o documentación sobre este tipo de funcionalidad?Guardar archivo usando Greasemonkey

Para que quede claro, no quiero escribir en el sistema de archivos local (sé que es imposible en la caja de arena), pero presentar un archivo descargable - que también puede ser imposible ...

Respuesta

1

Tal vez no pueda escribirlo en un CSV local, pero ¿podría escribirlo para decir Google Spreadsheet?

+0

Interesante idea. Definitivamente investigaré esto, pero puede requerir mucho más trabajo de lo que estoy dispuesto a hacer para esto y tal vez sería más rápido hacer un complemento de Firefox real para obtener acceso al sistema de archivos. –

1

enfoque alternativo podría ser si usted enciende una petición http controlado Javascript para cada cvs línea que tiene que un applet de servidor http local que es capaz de almacenar (CGI simple o Apache/PHP podría hacer que sea fácil)

0

I no tengo idea de cómo funciona, pero la utilidad gratuita JSZip parece ser capaz de generar un archivo Zip que aparece para descargar. El script de usuario Fitocracy Bulk CSV utilizaba JSZip para recopilar los 100 archivos de datos de entrenamiento que generaba.

3

Sí, puedes hacerlo usando BLOB.

La secuencia de comandos adjuntará contenido a un enlace que al hacer clic ofrecerá descargar un archivo (un archivo que nunca existió).

Más información en:


Ésta es la forma en que lo hice (hay muchas otras maneras de hacerlo):

  1. GM (greasemonkey) s cript genera el contenido del archivo
  2. GM lo pasa a la página web usando sessionStorage.variable = "... content .."
  3. script en la página hace visible el enlace y adjunta el contenido de la variable al objeto BLOB .

Es necesario enhebrar/analizar el objeto.

  • contactos = JSON.parse (sessionStorage.contacts)
  • sessionStorage.contacts = JSON.stringify (contactos);

he modificado ligeramente el guión original para que sea genérico para varios tipos MIME.

Aquí está el mío.

// Stuff to create the BLOB object --- ANY TYPE --- 
var textFile = null, 
//-- Function 
makeTextFile = function (text,textType) { 
    // textType can be 'text/html' 'text/vcard' 'text/txt' ... 
    var data = new Blob([text], {type: textType }); 
    // If we are replacing a previously generated file we need to 
    // manually revoke the object URL to avoid memory leaks. 
    if (textFile !== null) { 
     window.URL.revokeObjectURL(textFile); 
    } 
    textFile = window.URL.createObjectURL(data); 
    return textFile; 
    }; 

Espero que ayude.

3
var data='col1,col2\nval1,val2'; 
var a = document.createElement('a'); 
a.href = 'data:application/csv;charset=utf-8,' + encodeURIComponent(data); 
//supported by chrome 14+ and firefox 20+ 
a.download = 'data.csv'; 
//needed for firefox 
document.getElementsByTagName('body')[0].appendChild(a); 
//supported by chrome 20+ and firefox 5+ 
a.click(); 

DEMO

Cuestiones relacionadas