LibreOffice Calc Formelassistent


Et Python-værktøj til hurtig oprettelse, afprøvning og administration af formler i LibreOffice Calc – med et favoritssystem, teamsynkronisering, flersproget understøttelse og en plugin-manager.

🚀 Funktioner


  • 📑 4 faner med over 60 funktioner

  • 🌐 38 sprog (inkl. hindi med automatisk skrifttypeinstallation)

  • ⭐ Favoritssystem (lokalt og teamsynkronisering via netværksdrev)

  • 🛠 Adminpanel til teamfavoritter (adgangskodebeskyttet)

  • 📋 Indsætningsklare formler med syntaksfremhævning

  • ✏️ Redigerbart outputfelt med fortryd/gentag

  • 📖 Integreret hjælp og funktionsreference (pr. sprog)

  • 💾 Automatisk lagring (JSON, atomisk skrivning)

  • 🌙 Mørkt tema

  • 🔌 Plugin-manager til oprettelse af egne formel-plugins

  • 🔤 RTL-understøttelse (højre mod venstre) – automatisk genkendelse af skriveretning

  • 🗄️ Sikkerhedskopiering og gendannelse – gem alle indstillinger og favoritter med navn og adgangskode

  • ⌨️ Global tastaturgenvej Ctrl+F12 til at minimere/gendanne vinduet
  • 🔍 JSON-validator – automatisk kontrol og rettelse af languages.json og formula_explanations.json

  • 🖥️ Brug


    1. Indtast dine værdier

  • Celleområde (f.eks. A1:A10)

  • Celle 1 / Celle 2 (f.eks. A1, B1)

  • Valgfri parameter (f.eks. tekst eller indeks)

  • Referencetilstand valgbar: A1, $A1, A$1, $A$1

  • 2. Vælg en funktion Vælg en fane og klik på en funktion – formlen genereres med det samme.

    3. Tilpas formlen Den genererede formel kan redigeres direkte i outputfeltet.

    4. Kopiér Kopiér til udklipsholderen med ét klik (inkl. syntaksfarver).

    5. Brug favoritter

  • ⭐ Gem → gem den aktuelle formel (Ctrl+S)

  • 📂 Indlæs → genbrug en gemt formel

  • ❌ Slet → Delete-tasten eller knappen

  • 🕐 Historik → senest anvendte formler

  • 📊 Faneoversigt


    Fane 1 – Grundlæggende funktioner + - \* / ^ SUM, AVERAGE, MIN, MAX, MEDIAN, COUNT, COUNTA, SUMPRODUCT

    Fane 2 – Avancerede funktioner IF, AND, OR, NOT SUMIF, COUNTIF, AVERAGEIF, SUMIFS, STDEV, VAR, COUNTBLANK, LARGE

    Fane 3 – Dato og tekst TODAY, NOW, YEAR, MONTH, DAY, DATE, DATEDIF, WEEKDAY CONCATENATE, LEN, LEFT, RIGHT, MID, UPPER, LOWER, TRIM

    Fane 4 – Opslag og afrunding VLOOKUP, HLOOKUP, INDEX, MATCH, INDEX+MATCH ROUND, ROUNDUP, ROUNDDOWN, INT, TRUNC, ABS, MOD, SQRT, RAND


    📖 Formelforklaringer fra LibreOffice-dokumentationen


    Filen formula_explanations.json udfyldes direkte fra den officielle LibreOffice Calc-dokumentation (https://help.libreoffice.org).

    Datakilde og opdatering


  • Beskrivelser, syntaksoplysninger og eksempler hentes fra LibreOffices officielle hjælpeside
  • De understøttede sprog afhænger af de oversættelser, der er tilgængelige på hjemmesiden
  • Filen indeholder for hver funktion: navn, syntaks, beskrivelse, eksempel og kategori
  • Tilføjelser eller rettelser kan foretages manuelt (se JSON-validator)

  • Struktur for formula_explanations.json


    `json
    {
    "SUM": {
    "da": {
    "syntax": "SUM(Tal1; Tal2; ...)",
    "description": "Lægger alle tal i et celleområde sammen.",
    "example": "=SUM(A1:A10)"
    },
    "en": {
    "syntax": "SUM(Number1; Number2; ...)",
    "description": "Adds all numbers in a cell range.",
    "example": "=SUM(A1:A10)"
    }
    }
    }
    `

    | Felt | Obligatorisk | Beskrivelse |
    |------|-------------|-------------|
    | syntax | ✅ | Formelsyntaks med parametre |
    | description | ✅ | Kort beskrivelse af funktionen |
    | example | ✅ | Anvendelseseksempel som færdig formel |
    | note | ❌ | Valgfri bemærkning |

    💡 Bemærkning: Hvis der ikke findes en post for et sprog, falder appen automatisk tilbage til den engelske version.

    ---

    🔍 JSON-validator til sprogfiler


    Den integrerede JSON-validator kontrollerer og retter languages.json og formula_explanations.json for konsistens, fuldstændighed og korrekte landenavne. Tilgængelig via Indstillinger → 🔍 JSON-validator.

    Hvad kontrolleres?


    #### languages.json

  • ✅ Alle 38 sprog er til stede (efter ISO 639-1 sprogkode)
  • ✅ Korrekte lande- og sprognavne (f.eks. "da""Dansk")
  • ✅ Ingen duplikerede sprogkoder
  • ✅ Obligatoriske felter til stede: name, native_name, flag, rtl
  • ✅ RTL-markering sat korrekt (Arabisk, Hebraisk, Persisk, Urdu → "rtl": true)

  • #### formula_explanations.json

  • ✅ Alle funktioner fra de 4 faner er registreret
  • ✅ Obligatoriske felter til stede: syntax, description, example
  • ✅ Ingen tomme felter ("" eller null)
  • ✅ Sprogkoder stemmer overens med languages.json

  • Rettelseslunktioner


    | Fejltype | Automatisk rettelse |
    |----------|---------------------|
    | Forkert landenavn | Erstattes med det korrekte navn ifl. ISO-standard |
    | Manglende sprogpost | Udfyldes med engelsk reserve |
    | Tomt obligatorisk felt | Markeres som "[MISSING]" til manuel kontrol |
    | Duplikeret post | Dubletter fjernes, den mere fuldstændige beholdes |
    | Forkert RTL-flag | Rettes automatisk ud fra kendte RTL-sprogkoder |

    Brug af validatoren


    1. Åbn Indstillinger → 🔍 JSON-validator
    2. Vælg fil: languages.json eller formula_explanations.json (eller begge)
    3. 🔎 Kontrollér – viser alle fundne problemer
    4. 🛠 Ret automatisk – løser alle automatisk rettelige fejl
    5. 💾 Gem – skriver den rettede fil atomisk
    6. 📋 Eksportér rapport (valgfrit) – gemmer en tekstfil med alle fund

    ⚠️ Bemærkning: Inden automatisk rettelse oprettes en sikkerhedskopi af den originale fil (languages.json.bak / formula_explanations.json.bak).

    ⭐ Favoritssystem


  • Gem og genbrug dine egne formler

  • Klar adskillelse mellem personlige og teamfavoritter

  • Teamfavoritter er skrivebeskyttede (kun administratorer kan redigere dem)

  • Dubletter forhindres automatisk

  • Fri sortering af personlige favoritter

  • Synkronisering via netværksdrev (valgfrit konfigurerbart)

  • Teamsynkronisering


    Gå til Indstillinger → 🌐 Netværkssti for at angive stien til et netværksdrev (f.eks. \\\\Server\\Share\\formulas).

  • Ved opstart: netværksfavoritter gemmes lokalt i en cache (offline-reserveløsning)

  • Ved lagring: egne formler skrives til netværket; teamformler forbliver uændrede

  • 🛠 Adminpanel


    Tilgængeligt via 🛠-knappen. Ved første klik oprettes en adgangskode (PBKDF2-SHA256, kun hashen gemmes).

  • Tilføj, rediger og slet teamformler

  • Skift adgangskode

  • Skriv ændringer direkte til netværksdrevet

  • 🔌 Plugin-manager


    Plugin-manageren (plugin_manager.py) er et selvstændigt værktøj til at oprette og administrere egne formel-plugins til Calc2. Den ligger i samme mappe som Calc2.py og startes fra 🔌-knappen i Calc2.py.

    Funktioner


  • Opret nyt plugin – trin-for-trin-guide (navn, formler, oversættelser, opsummering)

  • Tilføj formler – tilføj formler til et eksisterende plugin

  • Rediger oversættelser – oversæt formelnavne til alle 38 sprog

  • Åbn plugin-mappe – direkte i filstifinderen

  • Slet plugin – med bekræftelsesdialog

  • Plugin-struktur


    Hvert plugin ligger som en undermappe i plugins/ og består af to filer:

    `
    plugins/
    my_plugin/
    plugin.json ← metadata (navn, version, forfatter, beskrivelse)
    formulas.json ← formler med oversættelser
    `

    Eksempel på plugin.json:

    `json
    {
    "id": "my_plugin",
    "enabled": true,
    "version": "1.0",
    "author": "Dit navn",
    "icon": "💰",
    "name": { "en": "Finance Formulas", "da": "Økonomiformler" },
    "description": { "en": "Useful formulas for financial calculations." }
    }
    `

    Eksempel på formulas.json:

    `json
    [
    {
    "formula": "=SUM(A1:A10)",
    "name": { "en": "Sum of range", "da": "Sum af område" },
    "description": { "en": "Adds all values in A1:A10." },
    "category": { "en": "Basic", "da": "Grundlæggende" }
    }
    ]
    `

    Vigtig bemærkning (⚠️)


    Plugin-manageren indeholder en ⚠️ Important Notice-knap. Et klik åbner et vindue med alle regler for korrekt oprettelse af plugins (på engelsk). De samme oplysninger findes også i IMPORTANT_NOTICE.md.

    🌐 Flersproget understøttelse


    38 sprog er tilgængelige og kan skiftes direkte i appen.
    Nye sprog kan tilføjes via 🌍-knappen med sprogguiden.

    Bemærkning om hindi (हिंदी): Første gang der skiftes til hindi, installeres skrifttypen *Noto Sans Devanagari* systembredt én gang. Windows vil bede om administratorrettigheder.

    🔤 RTL-understøttelse (højre mod venstre)


    Sprog med skrift fra højre mod venstre genkendes automatisk, og hele grænsefladen spejles:

  • Arabisk (عربي) – automatisk RTL-genkendelse
  • Hebraisk (עברית) – automatisk RTL-genkendelse
  • Persisk / Farsi (فارسی) – automatisk RTL-genkendelse
  • Urdu (اردو) – automatisk RTL-genkendelse

  • Hvad ændres ved RTL: Hele UI-layoutet spejles, inputfelter bruger RTL-justering, skrifttypen skifter automatisk til en RTL-kompatibel skrifttype (f.eks. *Noto Sans Arabic*, *Noto Sans Hebrew*).

    💡 Bemærkning: De genererede LibreOffice-formler forbliver altid i LTR-syntaks.


    🗄️ Sikkerhedskopiering og gendannelse


    Opret sikkerhedskopi


    Via Indstillinger → 🗄️ Opret sikkerhedskopi:

    1. Navn – valgfri betegnelse (f.eks. Backup_Mai_2025)
    2. Adgangskode – sikkerhedskopien krypteres med AES; uden adgangskoden er gendannelse ikke mulig
    3. Lagringssted – lokalt eller på et netværksdrev
    4. Klik på 💾 Opret sikkerhedskopi – opretter en .calc2backup-fil

    Indhold: Alle favoritter, indstillinger, teamfavoritter (valgfrit), installerede plugins.

    Gendannelse


    Via Indstillinger → 📂 Gendan sikkerhedskopi:

    1. Vælg sikkerhedskopifil (.calc2backup)
    2. Indtast adgangskoden
    3. Vælg omfang: kun favoritter / kun indstillinger / alt
    4. Klik på 🔄 Gendan

    ⚠️ Ved gendannelse overskrives de eksisterende data. En automatisk sikkerhedskopi af de aktuelle data tilbydes inden gendannelsen.


    💡 Tips


  • $A$1 → absolut reference (rullemenu ved siden af cellefelterne)

  • Ctrl+S → gem formel i favoritter

  • Ctrl+C → kopiér formel (når fokus ikke er i et inputfelt)

  • Ctrl+Z / Ctrl+Y → fortryd / gentag

  • Ctrl+F12 → minimer / gendan vinduet (virker selv når Calc2 er minimeret)

  • Delete-tasten i favoritlisten → fjern post

  • Formler kan justeres direkte i outputfeltet efter generering

  • 📁 Projektstruktur


    `
    Calc2.py ← hovedapplikation
    plugin_manager.py ← plugin-manager
    IMPORTANT_NOTICE.md ← noter om plugin-oprettelse
    data/
    README_de.md / README_en.md / ... ← hjælp pr. sprog
    REFERENZ_de.md / REFERENZ_en.md / ... ← funktionsreference pr. sprog
    language/
    languages.json ← UI-oversættelser (38 sprog)
    formula_explanations.json
    services/
    language_tool.py ← guide: tilføj nyt sprog
    settings_service.py
    auth_service.py
    favorites_service.py
    network_sync.py
    install_service.py
    backup_service.py ← sikkerhedskopiering og gendannelse
    json_validator.py ← kontrol og rettelse af languages.json / formula_explanations.json
    plugins/ ← plugin-mappe (oprettes automatisk)
    my_plugin/
    plugin.json
    formulas.json
    fonts/
    NotoSansDevanagari-Regular.ttf ← hindi-skrifttype
    NotoSansArabic-Regular.ttf ← arabisk skrifttype (RTL)
    NotoSansHebrew-Regular.ttf ← hebraisk skrifttype (RTL)
    python/ ← indlejret Python
    python.exe
    ...
    settings.json ← oprettes automatisk
    favoriten.json ← lokale favoritter (oprettes automatisk)
    `

    🧠 Tekniske højdepunkter


  • Atomisk filskrivning → forhindrer beskadigede filer ved lagring

  • Servicearkitektur → logik og UI er strengt adskilt

  • Automatisk migrering → gamle favoritformater genkendes og konverteres

  • Robust fejlhåndtering → beskadigede filer medfører ikke nedbrud

  • Syntaksfremhævning → formler vises i farver

  • Mørkt tema → fuldt understøttet

  • Plugin-system → Calc2 kan udvides med egne formel-plugins

  • RTL-motor → automatisk genkendelse af RTL-sprog, fuld spejling af UI inkl. passende skrifttyper

  • Sikkerhedskopiering og gendannelse → AES-krypterede sikkerhedskopier med navn og adgangskode, selektiv gendannelse

  • JSON-validator → automatisk kontrol og rettelse af languages.json og formula_explanations.json inkl. landenavne og obligatoriske felter

  • LibreOffice-kildeformula_explanations.json udfyldes fra den officielle LibreOffice Calc-dokumentation (https://help.libreoffice.org)

  • Global tastaturgenvejCtrl+F12 virker systembredt via keyboard-biblioteket (baggrundstråd)

  • Licens


    Fri til personlig og kommerciel brug.