Kako kreirati tabelu iz numerisane liste koristeći ONLYOFFICE makroe

12 February 2025By Natalija Blagojevic

Kada radimo s dokumentima, često moramo da konvertujemo numerisane liste u tabele kako bismo poboljšali čitljivost. Ručno obavljanje ovog zadatka može biti dugotrajno. Srećom, ONLYOFFICE makroi omogućavaju korisnicima da efikasno automatizuju ponavljajuće zadatke. U ovom blog postu pružićemo vam detaljno uputstvo za izradu ONLYOFFICE makroa koji besprekorno pretvara numerisane liste u strukturirane tabele.

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

Izrada makroa

Preuzimanje dokumenta i numerisanih pasusa

Makro započinje pristupanjem aktivnom dokumentu i preuzimanjem svih pasusa koji sadrže numeraciju:  

const oDocument = Api.GetDocument();
const paragraphs = oDocument.GetAllNumberedParagraphs();
  • Api.GetDocument() preuzima trenutno otvoren dokument.
  • oDocument.GetAllNumberedParagraphs() prikuplja sve pasuse koji koriste stilove numeracije.

 Organizovanje numerisanih stavki u redove

Skript prolazi kroz svaki numerisani pasus i sortira ih u redove tabele:  

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);
}
  • Skript prolazi kroz sve pasuse i proverava njihov nivo numeracije.
  • Stavke sa nivoom 0 započinju novi red, dok se stavke sa nivoom 1 dodaju kao kolone u trenutni red.
  • Nakon obrade, svi prikupljeni redovi se skladište u tableData.

Određivanje dimenzija tabele

Pre nego što kreira tabelu, makro određuje broj potrebnih kolona. Skript računa maxColumns pronalazeći najduži red u tableData. Ovo osigurava da tabela ima dovoljno kolona za sve stavke:

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

Kreiranje i popunjavanje tabele

Sada kada su podaci organizovani, makro kreira tabelu i ubacuje prikupljeni sadržaj:  

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) kreira tabelu sa odgovarajućim dimenzijama.
  • Skript prolazi kroz tableData i ubacuje odgovarajući tekst u svaku ćeliju.

Obrada grešaka

Kako bi se osiguralo nesmetano izvršavanje, koristi se, a try…catch blok za hvatanje i evidentiranje grešaka. Ako dođe do greške, ona će biti zabeležena u konzoli, pomažući korisnicima u otklanjanju problema:

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

Sada možemo pokrenuti naš makro i videti kako funkcioniše!  

Nadamo se da će ovaj makro postati dragoceni dodatak vašem alatu, pomažući vam da pojednostavite ponavljajuće zadatke u svom radnom procesu. ONLYOFFICE makroi su osmišljeni da optimizuju vaš rad i povećaju efikasnost. Podstičemo vas da istražite našu obimnu biblioteku API metoda i kreirate prilagođene makroe prema vašim potrebama. Ako imate ideje ili predloge, slobodno nas kontaktirajte. Uvek smo otvoreni za nove ideje i saradnju! Srećno u vašim istraživačkim poduhvatima!

 

Create your free ONLYOFFICE account

View, edit and collaborate on docs, sheets, slides, forms, and PDF files online.