SheetJS / sheetjs

📗 SheetJS Spreadsheet Data Toolkit -- New home https://git.sheetjs.com/SheetJS/sheetjs
https://sheetjs.com/
Apache License 2.0
35.14k stars 8k forks source link

Handle to XLSX file dragged and dropped #21

Closed vinaychada closed 11 years ago

vinaychada commented 11 years ago

Could you pls help understand how can I get an handle to the XLSX file dragged and dropped. I would like to save this file as an attachment.

redchair123 commented 11 years ago

That uses the html5 FileReader API: http://www.w3.org/TR/FileAPI/#FileReader-interface -- the processing occurs in your browser (the file is not sent anywhere)

The relevant code is located at: https://github.com/Niggler/js-xlsx/blob/gh-pages/index.html#L85-L100

function handleDrop(e) {
    e.stopPropagation();
    e.preventDefault();
    var files = e.dataTransfer.files;
    var i,f;
    for (i = 0, f = files[i]; i != files.length; ++i) {
        var reader = new FileReader();
        var name = f.name;
        reader.onload = function(e) {
            var data = e.target.result; // <-- 'data' contains the sheet data
            var xlsx = XLSX.read(data, {type: 'binary'});  // <--'xlsx' is an object that holds the relevant data
            process_xlsx(xlsx);
        };
        reader.readAsBinaryString(f);
    }
}
drop.addEventListener('drop', handleDrop, false);

To see how to work with those, look at the definitions of process_xlsx and to_csv and to_json

vinaychada commented 11 years ago

Thanks for your update.. My Question is how to get the file after drop, i need to insert the same file in my document object. Could you please help me how to get the file after drop the file. Once i get the file i will save into document object.

Thanks, Vinay

vinaychada commented 11 years ago

Thanks for your update.. My Question is how to get the file after drop, i need to insert the same file in my document object. Could you please help me how to get the file after drop the file. Once i get the file i will save into document object.

Thanks, Vinay

Many thanks and have a nice day.

Best regards, Vinay Kumar Chada ACCENTURE. India Mobile +91 9538995147 P Printing e-mails kills trees.


From: Niggler [notifications@github.com] Sent: 11 April 2013 19:19:33 To: Niggler/js-xlsx Cc: Kumar Chada, Vinay Subject: Re: [js-xlsx] Handle to XLSX file dragged and dropped (#21)

That uses the html5 FileReader API: http://www.w3.org/TR/FileAPI/#FileReader-interface -- the processing occurs in your browser (the file is not sent anywhere)

The relevant code is located at: https://github.com/Niggler/js-xlsx/blob/gh-pages/index.html#L85-L100

function handleDrop(e) { e.stopPropagation(); e.preventDefault(); var files = e.dataTransfer.files; var i,f; for (i = 0, f = files[i]; i != files.length; ++i) { var reader = new FileReader(); var name = f.name; reader.onload = function(e) { var data = e.target.result; // <-- 'data' contains the sheet data var xlsx = XLSX.read(data, {type: 'binary'}); // <--'xlsx' is an object that holds the relevant data process_xlsx(xlsx); }; reader.readAsBinaryString(f); } } drop.addEventListener('drop', handleDrop, false);

To see how to work with those, look at the definitions of process_xlsx and to_csv and to_json

— Reply to this email directly or view it on GitHubhttps://github.com/Niggler/js-xlsx/issues/21#issuecomment-16235394.


This message is for the designated recipient only and may contain privileged, proprietary, or otherwise confidential information. If you have received it in error, please notify the sender immediately and delete the original. Any other use of the e-mail by you is prohibited.

Where allowed by local law, electronic communications with Accenture and its affiliates, including e-mail and instant messaging (including content), may be scanned by our systems for the purposes of information security and assessment of internal compliance with Accenture policy.


www.accenture.com

redchair123 commented 11 years ago

@vinaychada Look at the code sample from my response. The original data is available in the reader.onload callback (this line: var data = e.target.result; // <-- 'data' contains the sheet data) and the parsed sheet data is available from XLSX.readFile (this line: var xlsx = XLSX.read(data, {type: 'binary'}); // <--'xlsx' is an object that holds the relevant data