【问题标题】:Path to excel file to convert to JSON要转换为 JSON 的 Excel 文件的路径
【发布时间】:2018-01-12 04:28:19
【问题描述】:

我正在做一个项目,我需要将 Excel 工作表转换为 JSON,然后转换后的数据将在浏览器上显示为 jQuery Datatables。 我的代码工作正常,但只有当我在 html 文件的同一文件夹中有 Excel 文件时。如何从其他文件夹获取 excel 文件的路径以在我的脚本中使用?

这是我的代码:

function asyncReq(callback) {

        var url = "LICENCIAMENTOS PROJECTOS.xlsx";
        var oReq = new XMLHttpRequest();
        oReq.open("GET", url, true);
        oReq.responseType = "arraybuffer";

        oReq.onload = function(e) {
            var arraybuffer = oReq.response;
            /* convert data to binary string */
            var data = new Uint8Array(arraybuffer);
            var arr = new Array();
            for (var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
            var bstr = arr.join("");

            /* Call XLSX */
            var workbook = XLSX.read(bstr, {
                type: "binary"
            });

            /* DO SOMETHING WITH workbook HERE */

            var sheet_name = workbook.SheetNames[22];

            /* Get worksheet */

            var worksheet = workbook.Sheets[sheet_name];


            /*RANGE DA TABELA*/
            //worksheet['!ref'] = "A10:AL363";
            var data = XLSX.utils.sheet_to_json(worksheet, {range: 4});
            $("h4").remove();
            callback(data);
        }
        oReq.send();

    }

    asyncReq(function(result) {
        console.log(result);
        $("#tabela-data").show();

        //DataTable 
        $('#tabela-data').DataTable({
            "language": {
                "lengthMenu": "Apresentar _MENU_ linhas por página",
                "search": "Pesquisar:",
                "info":    "Apresentadas _START_ a _END_ de _TOTAL_ linhas",
                "next":       "Próximo",
                "previous":   "Anterior"
            },
            "dom": '<"pull-left"f><"pull-right"l>tip',
            "aaData": result,
            "aoColumns": [

            ....

            ]
        });

    });

【问题讨论】:

  • 调整url 以反映位置。我们不知道它相对于您的页面的位置
  • 我必须将文件放在我桌面上的文件夹中。我可以用文件路径声明 url,但我收到此错误:XMLHttpRequest cannot load file:///C:/Users/username/Desktop/Licenciamentos/LICENCIAMENTOS%20PROJECTOS.xlsx。跨源请求仅支持协议方案:http、data、chrome、chrome-extension、https。
  • 因为那不是网络路径。此页面是从服务器打开的 - 本地主机还是远程?
  • 好的,我明白了。对不起,如果我没有更好地解释自己。但是是否可以访问该文件?
  • 当页面在 localhost 服务器上运行时不应该看到硬盘路径,也不应该在 url 中使用硬盘路径

标签: javascript json excel path


【解决方案1】:

您可以在此处为url 指定相对路径。

对于url = "LICENCIAMENTOS PROJECTOS.xlsx"oReq.open("GET", url, true);中使用的路径是'./LICENCIAMENTOS PROJECTOS.xlsx'

对于文件夹中包含电子表格的应用程序结构:

index.html
spreadsheets/
   LICENCIAMENTOS PROJECTOS.xlsx

您的url 路径将是spreadsheets/LICENCIAMENTOS PROJECTOS.xlsx./spreadsheets/LICENCIAMENTOS PROJECTOS.xlsx

如果您想回溯到其他位置的文件夹,其应用程序结构如下:

app/
    index.html
spreadsheets/
   LICENCIAMENTOS PROJECTOS.xlsx

您的url 路径将是../spreadsheets/LICENCIAMENTOS PROJECTOS.xlsx./../spreadsheets/LICENCIAMENTOS PROJECTOS.xlsx

根据电子表格的位置,您可以回溯到它。

【讨论】:

  • 我尝试做这样的事情(这是我必须拥有该文件的文件夹): var url = "C:/Users/username/Desktop/Licenciamentos/LICENCIAMENTOS PROJECTOS.xlsx";但我在 Chrome 中收到此错误:XMLHttpRequest cannot load file:///C:/Users/username/Desktop/Licenciamentos/LICENCIAMENTOS%20PROJECTOS.xlsx。跨源请求仅支持协议方案:http、data、chrome、chrome-extension、https。
  • 本地主机服务的路径是什么?
  • 我认为是 C:\wamp64\www,我正在使用 WAMP。我对此进行了搜索并了解到在本地主机内我可以毫无问题地找到该文件。但是可以使用我计算机其他文件夹中的文件吗?此网络应用程序仅供共享同一网络的计算机使用。
  • 出于安全原因,您应该考虑将文件移动到提供服务的位置的文件夹中。否则,url = '/../../ Users/username/Desktop/Licenciamentos/LICENCIAMEN‌​TOS%20PROJECTOS.xlsx‌​'
  • 好的,我理解这个安全原因,这是有道理的。但是这些计算机都连接到同一个网络硬盘驱动器,所以我认为任何计算机都可以简单地运行带有应用程序的 html 代码。我真的不需要托管网站,但 XMLHttpRequest 并没有让它那么简单。
猜你喜欢
  • 1970-01-01
  • 2016-12-18
  • 2023-01-19
  • 1970-01-01
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多