简体   繁体   English

通过xlsx.js通过路径打开excel文件

[英]open excel file with xlsx.js by path

Hi i want to open excel file with xlsx extension with xlsx.js library. 嗨,我想用xlsx.js库打开带有xlsx扩展名的Excel文件。 I can open file by html input but i want to open it by using file path. 我可以通过html输入打开文件,但是我想使用文件路径打开它。

I have this code extracted from xlsx.js demo: 我从xlsx.js演示中提取了以下代码:

function handleFile(e) {
    rABS = false;
    use_worker = false;

    console.log(e);

    var files = e.target.files;


    var f = files[0]; {
        var reader = new FileReader();
        var name = f.name;
        reader.onload = function (e) {
            if (typeof console !== 'undefined')
                console.log("onload", new Date(), rABS, use_worker);

            var data = e.target.result;
            console.log("target result >>>>>>>>> " + e.target.result);
            if (use_worker) {
                xw(data, process_wb);
            } else {
                var wb;
                if (rABS) {
                    wb = X.read(data, {
                            type : 'binary'
                        });
                } else {
                    var arr = fixdata(data);
                    wb = X.read(btoa(arr), {
                            type : 'base64'
                        });
                }
                process_wb(wb);
            }
        };
        if (rABS)
            reader.readAsBinaryString(f);
        else
            reader.readAsArrayBuffer(f);
    }
}

I want something like this: 我想要这样的东西:

var file = new File([""],"C:\\Users\\PalFS\\Downloads\\Fiverr_Example_List (1).xlsx");

var data = file;

How to do this or how can i convert this file into arraybuffer like it is returned from, var data = e.target.result;. 如何执行此操作或如何将该文件转换为arraybuffer,就像从var data = e.target.result;返回的那样。

Thanks 谢谢

You could use --allow-file-access-from-files flag at chrome, chromium with XMLHttpRequest , .responseType set to "arraybuffer" to retrieve .xlsx file from local filesystem as ArrayBuffer ; 您可以在chrome上使用--allow-file-access-from-files标志,将铬与XMLHttpRequest.responseType设置为"arraybuffer" ,以ArrayBuffer从本地文件系统中检索.xlsx文件; set new File() data to returned ArrayBuffer . new File()数据设置为返回的ArrayBuffer Second parameter at new File() constructor should set the .name property of created file. new File()构造函数中的第二个参数应设置所创建文件的.name属性。

Launch /path/to/chrome --allow-file-access-from-files 启动/path/to/chrome --allow-file-access-from-files

  var request = new XMLHttpRequest();
  // may be necessary to escape path string?
  request.open("GET", "C:\\Users\\PalFS\\Downloads\\Fiverr_Example_List (1).xlsx");
  request.responseType = "arraybuffer";
  request.onload = function () {
     // this.response should be `ArrayBuffer` of `.xlsx` file
     var file = new File(this.response, "Fiverr_Example_List.xlsx");
     // do stuff with `file`
  };
  request.send();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM