Move/Copy sheet feature

Posted by: davide.vago on 2 November 2020, 1:40 am EST

  • Posted 2 November 2020, 1:40 am EST - Updated 3 October 2022, 1:06 am EST

    Hi there,

    I’m reaching out to you over the sheet copy feature.

    The way this works is you right click on worksheet, select ‘Move or Copy’, then select copy, and an exact replica of the current worksheet opens up next to the original sheet.

    Manual copy/paste via clipboard cannot handle huge data amounts as per browser/os limitations, therefore we are unable to manually select all and copy the content via keyboard shortcut (cmd/ctrl+C) and then paste into a new sheet.

    Looking forward to find a solution

  • Posted 3 November 2020, 10:27 pm EST

    Hi Davide,

    SpreadJS support JSON import/export feature by which we could implement this feature. Please refer to the following code snippet and the attached sample that demonstrates the same.

    
    document.getElementById("copy").addEventListener("click", () => {
    sheetJson = spread.getActiveSheet().toJSON({
    includeDataSource: true
    });
    });
    document.getElementById("paste").addEventListener("click", () => {
    let sheet = spread2.getActiveSheet();
    if (sheetJson) sheet.fromJSON(sheetJson);
    });
    
    

    sample: https://codesandbox.io/s/stupefied-minsky-ss874?file=/src/index.js:481-802

    References:

    JSON Serialization: https://www.grapecity.com/spreadjs/demos/features/workbook/json-serialization#demo_source_name

    Regards

    Avinash

  • Posted 12 November 2020, 1:50 am EST

    Thank you Avinash,

    I was hoping to have something available natively, this solution requires an extra interface outside the context menus of the workbook.

    However, the main goal of the copy function was to create a new sheet within the same workbook with the copied data and it seems not be covered.

    In fact, the given example is instead showcasing the possibility to copy (using the fromJSON/toJSON methods) from a workbook instance to a different workbook instance.

    It will probably quite complex to handle the copy to new sheet using toJSON as it will require to get the activeSheet, get the relative name, extract the JSON, search within the sheets key the matching name to then slice it and fire an addSheet call.

    If the above is the case it’s definitely too over engineered for the scope.

  • Posted 13 November 2020, 12:10 am EST

    Hi Davide,

    This feature is currently not supported by SJS but we have made an enhancement request on your behalf. we will update on the development of this case. The internal ID for this issue will be SJS-6435.

    Further, You may also paste the sheet in the current workbook using the fromJSON method. Please refer to the following code snippet and attached an updated sample and let us know if you face any issues.

    
    document.getElementById("internalPaste").addEventListener("click", () => {
        var sheet = new GC.Spread.Sheets.Worksheet("NewSheet");
    
        sheet.fromJSON(sheetJson);
        sheet.name("NewSheet");
        spread.addSheet(spread.getSheetCount(), sheet);
        spread.setActiveSheetIndex(spread.getSheetCount() - 1);
      });
    
    

    Sample: https://codesandbox.io/s/suspicious-mcnulty-byjht?file=/src/index.js

    Regards

    Avinash

  • Posted 21 February 2023, 10:20 pm EST

    Hi,

    Was there any development to address this functionality?

    Thanks,

    Ben

  • Posted 22 February 2023, 7:23 pm EST

    Hi,

    Now SpreadJS support a separate command for copying the sheet. Please refer to the following code snippet and let me know if you face any issues.

    spread.commandManager().execute({cmd: "copySheet", sheetName: "Sheet1", targetIndex: targetIndex, newName: "Sheet1 (2)", includeBindingSource: true});
    
    /*This example move a sheet.*/
    spread.commandManager().execute({cmd: "moveSheet", sheetName: "Sheet1", targetIndex: targetIndex});
    

    Docs: https://www.grapecity.com/spreadjs/api/modules/GC.Spread.Sheets.Commands#copySheet

    move sheet: https://www.grapecity.com/spreadjs/api/modules/GC.Spread.Sheets.Commands#movesheet

    Regards,

    Avinash

Need extra support?

Upgrade your support plan and get personal unlimited phone support with our customer engagement team

Learn More

Forum Channels