首页 > 解决方案 > Exceljs不加载静态文件

问题描述

我需要在 excel 中生成接收到的数据,但是我遇到了访问服务器上的静态文件的问题

我使用 NuxtJS + VUE 一个静态 Excel 文件位于我的 /static 文件夹中

/static/Excel.xlsx
/static/Word.docx

如果我尝试通过 FileReader () 访问,则会收到错误消息

  var workBook = new Excel.Workbook();
  workBook.xlsx.readFile("/Excel.xlsx").then(function() {
    const ws = workbook.getWorksheet("Sheet1");
    cell = ws.getCell("A1").value;
    console.log(cell);
  });

错误:

TypeError: Cannot read property 'F_OK' of undefined

正如我从讨论中了解到的那样,此错误与浏览器安全性有关。我不想违反浏览器和应用程序访问文件的安全性。

用户自己加载模板的选项有点不方便,你必须做很多不必要的动作

链接到 https://github.com/ 上的解决方案

同时我找到了使用包的 Word 解决方案:docxtemplater - 它使用 JSZipUtils 并且 Word 的示例工作正常,但是 xlsx 的模块对我来说非常昂贵

loadFile(url, callback) {
  JSZipUtils.getBinaryContent(url, callback);
},

this.loadFile("/Word.docx", function(error, content) {
      if (error) {
        throw error;
      }
      var zip = new JSZip(content);
      var doc = new Docxtemplater();
      doc.loadZip(zip);
      //... getting data from the database and inserting it into the Word template
    });

是否有可能以某种方式使用 JSZipUtils 包来实现对 Excel 的访问?或者有另一种方式在不违反安全性的情况下获取静态文件的实例是否不同?

标签: javascriptnode.jsvue.jsnuxt.jsexceljs

解决方案


推荐阅读