2014-12-18 18 views
7

Attualmente sto cercando di esportare una matrice in un file Excel con la formattazione delle celle.Esportazione una serie di file excel con la formattazione delle celle

Sto partendo con questo codice qui:

https://github.com/SheetJS/js-xlsx/blob/master/tests/write.js 

ma il problema è che ogni volta che sto cercando di esportare (salvare il file come un file xlsx) questo è l'errore che si presenta nella console:

Uncaught TypeError: Cannot read property 'writeFileSync' of undefined xlsx.js:5182 
writeSync     xlsx.js:5182 
writeFileSync    xlsx.js:5173 
process_xlsx    Test.html:379 
reader.onload    Test.html:438 

le ultime 2 righe sono fondamentalmente la parte del codice che dice

XLSX.writeFile(wb, 'sheetjs.xlsx'); 

So che wb non è indefinito come se provassi a fare console.log, il foglio di calcolo Excel si presenta correttamente: |

Qualcuno può aiutarmi con questo? Sto anche cercando di avere ogni cella ha una formattazione diversa (IE colore differente/grassetto/pieno/etc)

+0

Se si utilizza quel file di prova come base, assicurarsi di includere correttamente tutte le dipendenze – Sirko

+0

Per questo, non sono le dipendenze solo xlsx.js e jszip.js? Ho anche incluso jquery.js in caso – Johnti

+0

Can you includono il codice vero e proprio, come è attualmente? – Sirko

risposta

3

si basa il codice su un test node.js. I documentation afferma:

scrittura cartelle di lavoro

per la scrittura, il primo passo è quello di generare i dati in uscita. L'aiutante funzioni di scrittura e WriteFile produrranno i dati in vari formati adatti per la diffusione. Il secondo passaggio consiste nell'effettivo condividere i dati con il punto finale. Supponendo cartella di lavoro è un oggetto cartella di lavoro:

nodejs scrivere sul file:

/* output format determined by filename */ 
XLSX.writeFile(workbook, 'out.xlsx'); 
/* at this point, out.xlsx is a file that you can distribute */ 

scrittura alla stringa binaria (utilizzando FileSaver.js):

/* bookType can be 'xlsx' or 'xlsm' or 'xlsb' */ 
var wopts = { bookType:'xlsx', bookSST:false, type:'binary' }; 

var wbout = XLSX.write(workbook,wopts); 

function s2ab(s) { 
    var buf = new ArrayBuffer(s.length); 
    var view = new Uint8Array(buf); 
    for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; 
    return buf; 
} 

/* the saveAs call downloads a file on the local machine */ 
saveAs(new Blob([s2ab(wbout)],{type:""}), "test.xlsx") 

Quindi per riassumere: si tenta di utilizzare node.js interno funzioni nel browser, che non funziona. Se si tenta di seguire l'approccio secondi (XLSX.write() invece di XLSX.writeFile()), si dovrebbe andare bene.

+0

Oh wow grazie mille. Ora mi sento un idiota :((ancora nuovo di JS quindi scusami ah ah). Sai per caso come potrei cambiare la formattazione della cella per ogni singola cella? – Johnti

+0

Nell'oggetto [cella, hai un sacco delle proprietà] (https://github.com/SheetJS/js-xlsx/#user-content-cell-object), ad esempio 'r' per" codifica RTF ". Probabilmente è il tuo inizio. Forse prova a creare un foglio di Excel con la formattazione desiderata e caricarlo usando quella lib. Quindi puoi dare un'occhiata a come questi stili sono codificati – Sirko

+0

Ho dato un'occhiata a questo ma non riesco ancora a farlo funzionare. prendi 1 ultimo sguardo al js-xlsx per me e aiutami a capirlo?Tutto ciò di cui ho bisogno è poter essere in grassetto, cambiare il colore del testo e riempire il colore per ogni cella. – Johnti

Problemi correlati