Utilizza la macro di ONLYOFFICE per copiare fogli di calcolo

9 novembre 2023By Elena

La modifica dei fogli di calcolo può essere complicata, soprattutto quando si gestiscono più fogli di calcolo con dati simili. Per facilitare il processo, creiamo una macro che copia i dati da un foglio di calcolo a un altro e ti aiuta a gestire facilmente fogli di calcolo di grandi dimensioni.

Use ONLYOFFICE macro to copy spreadsheets

Costruzione della macro

Per prima cosa apriamo il foglio corrente nell’editor. Successivamente accediamo al foglio dove vogliamo copiare la variabile pastesheet, seguita dalla variabile oRange che specifica l’intervallo su cui vogliamo lavorare.

  const oWorksheet = Api.GetActiveSheet();
  const pastesheet = Api.GetSheet("Sheet2");
  const oRange = oWorksheet.GetRange("A1:C10");
  // If you want to copy a specific Selection to the new sheet
  // var oRange = oWorksheet.GetSelection();

Nota: se desideri lavorare su una selezione, utilizza invece il metodo GetSelection() decommentando la riga sopra.

Successivamente, utilizziamo il metodo foreach sull’intervallo specificato, per scorrere ogni cella dell’intervallo.

oRange.ForEach(function (range) {

Utilizzando l’intervallo di parametri nella funzione di callback, otteniamo l’accesso ai dati di ciascuna cella, a partire dalla prima.

  const oValue = range.GetValue();
  const oCharacters = range.GetCharacters(0, 2);
  const oFont = oCharacters.GetFont();
  const fontName = oFont.GetName();
  const oSize = oFont.GetSize();
  const isBold = oFont.GetBold();
  const isItalic = oFont.GetItalic();

Nel metodo ForEach, per prima cosa estraiamo il valore della cella. Successivamente estraiamo i caratteri iniziali del valore per conoscerne i parametri come grassetto, corsivo e così via. Quindi otteniamo il fontName, seguito dalla dimensione del carattere, per implementarli nel nuovo foglio.

if (oValue === null || oValue === "") {
      pastesheet.GetRange(range).SetValue(" ");
    }

Prima di inserire i valori nel nuovo foglio, eseguiamo alcuni controlli utilizzando i cicli if else per assicurarci che le celle vuote siano rappresentate correttamente nel nuovo foglio, come mostrato sopra.

else {
      oFont.SetName(fontName);
      pastesheet.GetRange(range).SetValue(oValue);
      pastesheet.GetRange(range).SetFontName(fontName);
      pastesheet.GetRange(range).SetFontSize(oSize);
      oWorksheet.GetRange(range).AutoFit(false, true);
      if (isBold) {
        pastesheet.GetRange(range).SetBold(true);
      }
      if (isItalic) {
        pastesheet.GetRange(range).SetItalic(true);
      }
    }

Infine, nel ciclo else, inseriamo i valori nelle celle corrispondenti e quindi diamo a quelle celle le loro proprietà come grassetto, corsivo, fontname e dimensione del font.

La macro completa

Ecco l’intero codice macro:

(function () {
  const oWorksheet = Api.GetActiveSheet();
  const pastesheet = Api.GetSheet("Sheet2");
  const oRange = oWorksheet.GetRange("A1:C10");

  // If you want to copy a specific Selection to the new sheet
  // var oRange = oWorksheet.GetSelection();

  oRange.ForEach(function (range) {
    const oValue = range.GetValue();
    const oCharacters = range.GetCharacters(0, 2);
    const oFont = oCharacters.GetFont();
    const fontName = oFont.GetName();
    const oSize = oFont.GetSize();
    const isBold = oFont.GetBold();
    const isItalic = oFont.GetItalic();
    if (oValue === null || oValue === "") {
      pastesheet.GetRange(range).SetValue(" ");
    } else {
      oFont.SetName(fontName);
      pastesheet.GetRange(range).SetValue(oValue);
      pastesheet.GetRange(range).SetFontName(fontName);
      pastesheet.GetRange(range).SetFontSize(oSize);
      oWorksheet.GetRange(range).AutoFit(false, true);

      if (isBold) {
        pastesheet.GetRange(range).SetBold(true);
      }
      if (isItalic) {
        pastesheet.GetRange(range).SetItalic(true);
      }
    }
  });
})();

Alcuni punti chiave da ricordare:

  1. Assicurati che il nome del foglio specificato nella macro esista e che sia preferibilmente un foglio vuoto.
  2. Assicurati di eseguire la macro dal foglio principale (il foglio principale) e non dal foglio appena creato.

Eseguiamo la nostra macro e vediamo come funziona!

Ecco un altro esempio della macro che funziona con il metodo GetSelection():

Ci auguriamo che la macro sia un ottimo strumento nelle attività quotidiane di modifica dei fogli di calcolo!

Non perdere l’occasione di sfruttare la potenza dell’API ONLYOFFICE. La nostra vasta libreria di metodi API è la chiave per trasformare le tue idee in realtà. Se hai domande o concetti innovativi, ti invitiamo a condividerli con noi. Il tuo contributo è molto apprezzato e siamo entusiasti della possibilità di collaborare con te. Buona fortuna per i tuoi sforzi esplorativi!