exceljs node.js写入文件在VPS上不起作用,但适用于Localhost

时间:2018-02-04 13:58:13

标签: node.js excel

当我尝试保存使用此repo创建的excel文件时:https://github.com/guyonroche/exceljs#create-a-workbook 在它运行的本地主机上,文件已创建并可用于打开和读取和编辑。 但是当在我的VPS上做同样的事情时,.then函数和.catch函数只返回任何内容。 该文件实际上是在服务器中创建的,但是在尝试打开它时出现了下一个错误:

The file format or file extension is not valid. Verify that the file has not been corrupted and that the file extension matches the format of the file.

这是代码:

app.get("/excel/createDemoExcel", function(req, res, next) {

  var workbook = new Excel.Workbook();
  workbook.creator = 'mydomain.com';
  workbook.lastModifiedBy = 'The name of the Team';
  workbook.created = new Date();
  workbook.modified = new Date();
  workbook.rightToLeft = true;

  let sheetParams = {
    views:[
      {
        xSplit: 1, ySplit:1
      }
    ],
    pageSetup: {
      paperSize: 9,
      orientation:'landscape'
    },
    views: [
      {
        rightToLeft: true
      }
    ]
  };
  workbook.addWorksheet('mySheet', sheetParams);

  let mySheet = workbook.getWorksheet('mySheet');

  mySheet.columns = [
    {
      width:20,
    },
    {
      width:20
    },
    {
      width:30
    }
  ];

  mySheet.addRow(["Raz", "Buchnik", "0509921014"]);
  mySheet.addRow(["Amos", "Fadlon", "0508555550"]);
  mySheet.addRow(["Dgani", "Lavi", "0501231231"]);

  mySheet.getRow(1).font = {
    size: 16,
    bold: true,
  };
  mySheet.getCell("A5").value = "Yes";
  mySheet.getCell("C5").value = "Yes1";
  mySheet.mergeCells("A5:C5");

  console.log("Trying to export");
  workbook.xlsx.writeFile("src/excelUploads/mySheet.xlsx")
  .then(function() {
    console.log("Exported");
    res.end("Excel");
  }).catch(function(err) {
    console.log("Errored");
  });

});

也许有人比较熟悉?

我试过设置目录777但仍无法正常工作。

谢谢!

2 个答案:

答案 0 :(得分:0)

有点烦人的是他们没有说清楚,但是对于某些文件类型有一个单独的模块。根据GitHub README.md,您可以安装此扩展。它们提供了一个安装程序脚本,所以只需:

curl https://raw.githubusercontent.com/guyonoche/exceljs-formats/master/install.sh -L | sudo bash

希望这会有所帮助。我自己真的很困惑这个错误。

答案 1 :(得分:0)

您可能想降级您的Exceljs版本。请参阅以下主题:https://github.com/exceljs/exceljs/issues/883

我还遇到了一个问题,它在本地运行良好,但在服务器上却无法运行。将该软件包降级到1.10.0,一切现在都可以在服务器上使用。