使用exceljs并尝试使readfile函数中的局部变量全局

时间:2019-10-02 18:08:42

标签: javascript exceljs

嗨,我在我的项目中使用了带有JavaScript的exceljs,但是我在readFile函数中修改的所有变量都没有超出范围。

//array for pdm paths 
var arrFundPartyRole = [];

//mapping UI_id -> UI_Label 
var labelUIMap = new Map();

//xlsx parsing to get necessary data
var workbook = new Excel.Workbook();
workbook.xlsx.readFile('Veritas_Full_082819.xlsx')
  .then(function() {

    //getting the worksheet and necessary columns 
    var worksheet = workbook.getWorksheet('VT_FULL');
    var pdmPath = worksheet.getColumn(18);
    var idUI = worksheet.getColumn(24);
    var labelUI = worksheet.getColumn(27);

    //iterate over all pdm paths by column
    pdmPath.eachCell(function(cell, rowNumber) {
      var path = cell.value;

      if (path != null) {
        //splitting the path
        var pathElts = path.split(".");
        if (pathElts[0] == 'FundPartyRole') {
          arrFundPartyRole.push(pathElts);
        }
      }
    });

    //iterate over the UI_id column and find corresponding label
    //counter to skip the first 2 columns?
    var counter = 0;
    idUI.eachCell(function(cell, rowNumber) {
      if ((cell.value != null) && (counter > 1)) {
        var idAddress = cell.address;
        //address of id can be used to create address of label
        var labelAddress = idAddress.replace("X", "AA");
        var label = worksheet.getCell(labelAddress).value;
        labelUIMap.set(cell.value, label);
      }
      counter = counter + 1;
    });

    /*for (i = 0; i < arrFundPartyRole.length; i++) {
      if labelUIMap.get()
    }*/
    console.log(labelUIMap);

    });

  console.log(labelUIMap);

在这种情况下,当我在范围外打印但填充在范围内时,labelUIMap和arrFundPartyRole为空。我想念什么吗?

1 个答案:

答案 0 :(得分:0)

您必须在第一个console.log(labelUIMap)之后添加:

var i = last row that you have modify: number;
worksheet.getRow(i).commit();
workbook.xlsx.writeFile('Veritas_Full_082819.xlsx').then(()=>{

      }).catch((err)=>{
        throw err;
      });