angularjs-xlsx

Angular xlsx - multiple json to sheet


I have an export to excel using js-xlsx and the function utils.json_to_sheet.

Problem is I have another json object that I want to export to the same sheet, right below the previous one.

XLSX.utils.json_to_sheet(outputData);

Tried to find anything about it in docs and so, but seems like no one had that issue. A similar question was asked a while ago with no answer unfortunately - How to add multiple table with different data-set to the same sheet in exceljs . Any ideas?


Solution

  • I ended up talking with xlsx support over the mail and they gave me the answer. There is a function called sheet_add_json.

    Simple example:

    XLSX.utils.sheet_add_json(sheet, secondJson, { skipHeader: true, origin: "A" + (firstJson.length + 3) });

    More examples:

    Consider the worksheet:
    
    XXX| A | B | C | D | E | F | G |
    ---+---+---+---+---+---+---+---+
     1 | S | h | e | e | t | J | S |
     2 | 1 | 2 |   |   | 5 | 6 | 7 |
     3 | 2 | 3 |   |   | 6 | 7 | 8 |
     4 | 3 | 4 |   |   | 7 | 8 | 9 |
     5 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
    This worksheet can be built up in the order A1:G1, A2:B4, E2:G4, A5:G5:
    
    /* Initial row */
    
    var ws = XLSX.utils.json_to_sheet([
      { A: "S", B: "h", C: "e", D: "e", E: "t", F: "J", G: "S" }
    ], {header: ["A", "B", "C", "D", "E", "F", "G"], skipHeader: true});
    
    
    /* Write data starting at A2 */
    
    XLSX.utils.sheet_add_json(ws, [
      { A: 1, B: 2 }, { A: 2, B: 3 }, { A: 3, B: 4 }
    ], {skipHeader: true, origin: "A2"});
    
    
    
    /* Write data starting at E2 */
    
    XLSX.utils.sheet_add_json(ws, [
      { A: 5, B: 6, C: 7 }, { A: 6, B: 7, C: 8 }, { A: 7, B: 8, C: 9 }
    ], {skipHeader: true, origin: { r: 1, c: 4 }, header: [ "A", "B", "C" ]});
    
    
    /* Append row */
    
    XLSX.utils.sheet_add_json(ws, [
      { A: 4, B: 5, C: 6, D: 7, E: 8, F: 9, G: 0 }
    ], {header: ["A", "B", "C", "D", "E", "F", "G"], skipHeader: true, origin: -1});