function cbPrepareXlsxToGenerate() {
    genobj.generate_data = {}
    genobj.generate_data.shared_strings = []
    genobj.lookup_strings = {}
    genobj.generate_data.total_strings = 0
    genobj.generate_data.cell_strings = []

    // Tell all the features (plugins) that we are about to generate a new document zip:
    gen_private.features.type.xlsx.emitEvent('beforeGen', genobj)

    // Allow some plugins to do more stuff after all the plugins added their data:
    gen_private.features.type.xlsx.emitEvent('beforeGenFinal', genobj)

    // Create the share strings data:
    for (
      var i = 0, total_size = gen_private.pages.length;
      i < total_size;
      i++
    ) {
      if (gen_private.pages[i]) {
        for (
          var rowId = 0, total_size_y = gen_private.pages[i].sheet.data.length;
          rowId < total_size_y;
          rowId++
        ) {
          if (gen_private.pages[i].sheet.data[rowId]) {
            for (
              var columnId = 0,
                total_size_x = gen_private.pages[i].sheet.data[rowId].length;
              columnId < total_size_x;
              columnId++
            ) {
              if (
                typeof gen_private.pages[i].sheet.data[rowId][columnId] !==
                'undefined'
              ) {
                switch (
                  typeof gen_private.pages[i].sheet.data[rowId][columnId]
                ) {
                  case 'string':
                    genobj.generate_data.total_strings++

                    if (!genobj.generate_data.cell_strings[i]) {
                      genobj.generate_data.cell_strings[i] = []
                    } // Endif.

                    if (!genobj.generate_data.cell_strings[i][rowId]) {
                      genobj.generate_data.cell_strings[i][rowId] = []
                    } // Endif.

                    var shared_str =
                      gen_private.pages[i].sheet.data[rowId][columnId]

                    if (shared_str in genobj.lookup_strings) {
                      genobj.generate_data.cell_strings[i][rowId][columnId] =
                        genobj.lookup_strings[shared_str]
                    } else {
                      var shared_str_position =
                        genobj.generate_data.shared_strings.length
                      genobj.generate_data.cell_strings[i][rowId][
                        columnId
                      ] = shared_str_position
                      genobj.lookup_strings[shared_str] = shared_str_position
                      genobj.generate_data.shared_strings[
                        shared_str_position
                      ] = shared_str
                    } // Endif.
                    break
                } // End of switch.
              } // Endif.
            } // End of for loop.
          } // Endif.
        } // End of for loop.
      } // Endif.
    } // End of for loop.

    if (genobj.generate_data.total_strings) {
      gen_private.plugs.intAddAnyResourceToParse(
        'xl\\sharedStrings.xml',
        'buffer',
        null,
        cbMakeXlsSharedStrings,
        false
      )
      gen_private.type.msoffice.files_list.push({
        name: '/xl/sharedStrings.xml',
        type:
          'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml',
        clear: 'generate'
      })

      gen_private.type.msoffice.rels_app.push({
        type:
          'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings',
        target: 'sharedStrings.xml',
        clear: 'generate'
      })
    } // Endif.
  }
Prepare everything to generate XLSX files.

This method working on all the Excel cells to find out information needed by the generator engine.