Come creare una tabella dall’elenco numerato utilizzando le macro di ONLYOFFICE

12 febbraio 2025Da Alice

Quando si lavora con i documenti, spesso è necessario convertire elenchi numerati in tabelle per migliorarne la leggibilità. Eseguire questa operazione manualmente può richiedere molto tempo, ma fortunatamente, le macro di ONLYOFFICE permettono agli utenti di automatizzare attività ripetitive in modo efficiente. In questo post del blog, forniremo una guida passo dopo passo per sviluppare una macro di ONLYOFFICE che trasforma senza problemi gli elenchi numerati in tabelle strutturate.

How to to create a table from the numbered list using ONLYOFFICE macros

Costruzione della macro

Recuperare il documento e i paragrafi numerati

La macro inizia accedendo al documento attivo e recuperando tutti i paragrafi che contengono numerazione:

const oDocument = Api.GetDocument();
const paragraphs = oDocument.GetAllNumberedParagraphs();
  • Api.GetDocument() recupera il documento attualmente aperto.
  • oDocument.GetAllNumberedParagraphs() raccoglie tutti i paragrafi che utilizzano stili di numerazione.

Organizzare gli elementi numerati in righe

Lo script scorre ogni paragrafo numerato e li ordina in righe di tabella:

let tableData = [];
let currentRow = [];

for (let i = 0; i < paragraphs.length; i++) {
    let level = paragraphs[i].GetNumbering().GetLevelIndex();
    let text = paragraphs[i].GetText().trim();

    if (level === 0) {
        if (currentRow.length > 0) {
            tableData.push(currentRow);
        }
        currentRow = [text];
    } else if (level === 1 && currentRow.length > 0) {
        currentRow.push(text);
    }
}

if (currentRow.length > 0) {
    tableData.push(currentRow);
}
  • Lo script scansiona tutti i paragrafi e verifica i loro livelli di numerazione.
  • Gli elementi di livello 0 avviano una nuova riga, mentre quelli di livello 1 vengono aggiunti come colonne nella riga corrente.
  • Una volta elaborati, tutti i dati raccolti vengono memorizzati in tableData.

Determinazione delle dimensioni della tabella

Prima di creare la tabella, la macro determina il numero di colonne necessarie. Lo script calcola maxColumns trovando la riga più lunga in tableData. Questo assicura che la tabella abbia abbastanza colonne per contenere correttamente tutti gli elementi:

let maxColumns = 0;
for (let j = 0; j < tableData.length; j++) {
    if (tableData[j].length > maxColumns) {
        maxColumns = tableData[j].length;
    }
}

Creazione e popolamento della tabella

Ora che i dati sono organizzati, la macro crea una tabella e inserisce il contenuto estratto:

let table = Api.CreateTable(maxColumns, tableData.length);
oDocument.Push(table);

for (let row = 0; row < tableData.length; row++) {
    for (let col = 0; col < tableData[row].length; col++) {
        table
            .GetCell(row, col)
            .GetContent()
            .GetElement(0)
            .AddText(tableData[row][col]);
    }
}
  • Api.CreateTable(maxColumns, tableData.length) crea una tabella con le dimensioni necessarie.
  • Lo script scorre tableData e inserisce il testo corrispondente in ciascuna cella.

Gestione degli errori

Per garantire un’esecuzione fluida, viene utilizzato un blocco try…catch per catturare e registrare gli errori. Se si verifica un errore, questo verrà registrato nella console, aiutando gli utenti a individuare eventuali problemi:

try {
    // Code execution
} catch (error) {
    console.log("Error: " + error.message);
}

Ora eseguiamo la nostra macro e vediamo come funziona!

Speriamo che questa macro diventi un’aggiunta preziosa al tuo set di strumenti, aiutandoti a semplificare i compiti ripetitivi nel tuo flusso di lavoro. Le macro di ONLYOFFICE sono progettate per ottimizzare il lavoro e migliorare l’efficienza. Ti incoraggiamo a esplorare la nostra vasta libreria API e creare macro personalizzate in base alle tue esigenze. Se hai idee o suggerimenti, sentiti libero di contattarci. Siamo sempre aperti a nuove idee e collaborazioni! Buon lavoro!

 

Crea il tuo account ONLYOFFICE gratuito

Visualizza, modifica e collabora su documenti, fogli, diapositive, moduli e file PDF online.