LibreOffice Calc Formelassistent


Ett Python-verktyg för att snabbt skapa, testa och hantera formler i LibreOffice Calc – med ett favoritersystem, teamsynkronisering, flerspråkighet och ett plugin-hanterare.

🚀 Funktioner


  • 📑 4 flikar med över 60 funktioner

  • 🌐 38 språk (inkl. hindi med automatisk teckensnittsinstallation)

  • ⭐ Favoritersystem (lokalt och teamsynkronisering via nätverksenhet)

  • 🛠 Administratörspanel för teamfavoriter (lösenordsskyddad)

  • 📋 Direkt kopieringsbara formler med syntaxmarkering

  • ✏️ Redigerbart utdatafält med ångra/gör om

  • 📖 Inbyggd hjälp och funktionsreferens (per språk)

  • 💾 Automatisk sparning (JSON, atomär skrivning)

  • 🌙 Mörkt läge

  • 🔌 Plugin-hanterare för att skapa egna formel-plugins

  • 🔤 RTL-stöd (höger till vänster) – automatisk igenkänning av skrivriktning

  • 🗄️ Säkerhetskopiering och återställning – spara alla inställningar och favoriter med namn och lösenord

  • ⌨️ Global kortkommando Ctrl+F12 för att minimera/återställa fönstret
  • 🔍 JSON-validator – automatisk kontroll och rättelse av languages.json och formula_explanations.json

  • 🖥️ Användning


    1. Ange indata

  • Cellområde (t.ex. A1:A10)

  • Cell 1 / Cell 2 (t.ex. A1, B1)

  • Valfri parameter (t.ex. text eller index)

  • Valbart läge för absolut referens: A1, $A1, A$1, $A$1

  • 2. Välj en funktion Välj en flik och klicka på en funktion – formeln genereras omedelbart.

    3. Anpassa formeln Den genererade formeln kan redigeras direkt i utdatafältet.

    4. Kopiera Överför till urklipp med ett klick (inkl. syntaxfärger).

    5. Använd favoriter

  • ⭐ Spara → spara aktuell formel (Ctrl+S)

  • 📂 Ladda → återanvänd formel

  • ❌ Ta bort → Delete-tangenten eller knappen

  • 🕐 Historik → senast använda formler

  • 📊 Fliköversikt


    Flik 1 – Grundfunktioner + - * / ^ SUM, AVERAGE, MIN, MAX, MEDIAN, COUNT, COUNTA, SUMPRODUCT

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

    Flik 3 – Datum och text TODAY, NOW, YEAR, MONTH, DAY, DATE, DATEDIF, WEEKDAY CONCATENATE, LEN, LEFT, RIGHT, MID, UPPER, LOWER, TRIM

    Flik 4 – Uppslagning och avrundning VLOOKUP, HLOOKUP, INDEX, MATCH, INDEX+MATCH ROUND, ROUNDUP, ROUNDDOWN, INT, TRUNC, ABS, MOD, SQRT, RAND


    📖 Formelförklaringar från LibreOffice-dokumentationen


    Filen formula_explanations.json fylls direkt från den officiella LibreOffice Calc-dokumentationen (https://help.libreoffice.org).

    Datakälla och uppdatering


  • Beskrivningar, syntaxinformation och exempel hämtas från LibreOffices officiella hjälpsida
  • Stödda språk beror på tillgängliga översättningar på sidan
  • Filen innehåller för varje funktion: namn, syntax, beskrivning, exempel och kategori
  • Tillägg eller rättelser kan göras manuellt (se JSON-validator)

  • Struktur för formula_explanations.json


    `json
    {
    "SUM": {
    "sv": {
    "syntax": "SUM(Tal1; Tal2; ...)",
    "description": "Lägger ihop alla tal i ett cellområde.",
    "example": "=SUM(A1:A10)"
    },
    "en": {
    "syntax": "SUM(Number1; Number2; ...)",
    "description": "Adds all numbers in a cell range.",
    "example": "=SUM(A1:A10)"
    }
    }
    }
    `

    | Fält | Obligatoriskt | Beskrivning |
    |------|--------------|-------------|
    | syntax | ✅ | Formelsyntax med parametrar |
    | description | ✅ | Kort beskrivning av funktionen |
    | example | ✅ | Användningsexempel som färdig formel |
    | note | ❌ | Valfri anmärkning |

    💡 Obs: Om det inte finns en post för ett språk återgår appen automatiskt till den engelska versionen.

    ---

    🔍 JSON-validator för språkfiler


    Den inbyggda JSON-validatorn kontrollerar och rättar languages.json och formula_explanations.json för konsistens, fullständighet och korrekta landsnamn. Nås via Inställningar → 🔍 JSON-validator.

    Vad kontrolleras?


    #### languages.json

  • ✅ Alla 38 språk är på plats (efter ISO 639-1 språkkod)
  • ✅ Korrekta lands- och språknamn (t.ex. "sv""Svenska")
  • ✅ Inga duplicerade språkkoder
  • ✅ Obligatoriska fält finns: name, native_name, flag, rtl
  • ✅ RTL-flagga korrekt inställd (Arabiska, Hebreiska, Persiska, Urdu → "rtl": true)

  • #### formula_explanations.json

  • ✅ Alla funktioner från de 4 flikarna är registrerade
  • ✅ Obligatoriska fält finns: syntax, description, example
  • ✅ Inga tomma fält ("" eller null)
  • ✅ Språkkoder stämmer med languages.json

  • Rättelsefunktioner


    | Feltyp | Automatisk rättelse |
    |--------|---------------------|
    | Fel landsnamn | Ersätts med rätt namn enligt ISO |
    | Saknad språkpost | Fylls med engelsk reservversion |
    | Tomt obligatoriskt fält | Märks som "[MISSING]" för manuell granskning |
    | Duplicerad post | Dubletter borttagna, mer fullständig post behållen |
    | Fel RTL-flagga | Rättas automatiskt utifrån kända RTL-koder |

    Användning


    1. Öppna Inställningar → 🔍 JSON-validator
    2. Välj fil: languages.json eller formula_explanations.json (eller båda)
    3. 🔎 Kontrollera – visar alla funna problem
    4. 🛠 Rätta automatiskt – löser alla automatiskt rättbara fel
    5. 💾 Spara – skriver tillbaka den rättade filen atomärt
    6. 📋 Exportera rapport (valfritt) – sparar en textfil med alla fynd

    ⚠️ Obs: Innan varje automatisk rättelse skapas en säkerhetskopia av originalfilen (languages.json.bak / formula_explanations.json.bak).

    ⭐ Favoritersystem


  • Spara och återanvänd egna formler

  • Åtskillnad mellan egna favoriter och teamfavoriter

  • Teamfavoriter är skrivskyddade (endast administratören kan redigera)

  • Dubblettinlägg förhindras

  • Fri sortering av egna favoriter

  • Synkronisering via nätverksenhet (valfritt konfigurerbart)

  • Teamsynkronisering


    Under Inställningar → 🌐 Nätverkssökväg kan en nätverksenhet anges (t.ex. \\\\Server\\Delad\\formler).

  • Vid start: nätverksfavoriter sparas lokalt (reservkopia för offlineläge)

  • Vid sparning: egna formler skrivs till nätverket, teamformler förblir oförändrade

  • 🛠 Administratörspanel


    Nås via knappen 🛠. Vid första klicket ställs ett lösenord in (PBKDF2-SHA256, endast hashen lagras).

  • Lägga till, redigera och ta bort teamformler

  • Ändra lösenord

  • Skriva ändringar direkt till nätverksenheten

  • 🔌 Plugin-hanterare


    Plugin-hanteraren (plugin_manager.py) är ett fristående verktyg för att skapa och hantera egna formel-plugins för Calc2. Den finns i samma mapp som Calc2.py och startas via knappen 🔌 i Calc2.py:

    Funktioner


  • Skapa nytt plugin – steg-för-steg-guide (namn, formler, översättningar, sammanfattning)

  • Lägg till formler – lägga till formler i ett befintligt plugin

  • Redigera översättningar – översätt formelnamn till alla 38 språk

  • Öppna plugin-mapp – direkt i filutforskaren

  • Ta bort plugin – med säkerhetsbekräftelse

  • Plugin-struktur


    Varje plugin finns som en undermapp i plugins/ och består av två filer:

    `
    plugins/
    mitt_plugin/
    plugin.json ← metadata (namn, version, författare, beskrivning)
    formulas.json ← formler med översättningar
    `

    Exempel på plugin.json:

    `
    {
    "id": "mitt_plugin",
    "enabled": true,
    "version": "1.0",
    "author": "Ditt namn",
    "icon": "💰",
    "name": { "en": "Finance Formulas", "sv": "Ekonomiformler" },
    "description": { "en": "Useful formulas for financial calculations." }
    }
    `

    Exempel på formulas.json:

    `
    [
    {
    "formula": "=SUM(A1:A10)",
    "name": { "en": "Sum of range", "sv": "Summa av område" },
    "description": { "en": "Adds all values in A1:A10." },
    "category": { "en": "Basic", "sv": "Grundläggande" }
    }
    ]
    `

    Viktig information (⚠️ Important Notice)


    I plugin-hanteraren finns knappen ⚠️ Important Notice. Ett klick öppnar ett fönster med alla regler för korrekt plugin-skapande på engelska. Samma information finns också i IMPORTANT_NOTICE.md.

    🌐 Flerspråkighet


    38 språk tillgängliga, valbara direkt i appen.
    Nya språk kan läggas till via knappen 🌍 med Språkguiden.

    Obs om hindi (हिंदी): Vid det första bytet till hindi installeras teckensnittet *Noto Sans Devanagari* en gång på systemnivå. Windows frågar då efter administratörsbehörighet.

    🔤 RTL-stöd (höger till vänster)


    Språk med skrift från höger till vänster känns igen automatiskt och hela gränssnittet speglas:

  • Arabiska (عربي) – automatisk RTL-igenkänning
  • Hebreiska (עברית) – automatisk RTL-igenkänning
  • Persiska / Farsi (فارسی) – automatisk RTL-igenkänning
  • Urdu (اردو) – automatisk RTL-igenkänning

  • Vad ändras i RTL-läge: Hela UI-layouten speglas, inmatningsfält använder RTL-justering, teckensnittet byter automatiskt till ett RTL-kompatibelt (t.ex. *Noto Sans Arabic*, *Noto Sans Hebrew*).

    💡 Obs: Genererade LibreOffice-formler förblir alltid i LTR-syntax – bara gränssnittet ändrar riktning.


    🗄️ Säkerhetskopiering och återställning


    Skapa säkerhetskopia


    Via Inställningar → 🗄️ Skapa säkerhetskopia:

    1. Namn – valfri beteckning (t.ex. Kopia_Maj_2025)
    2. Lösenord – kopian krypteras med AES; utan lösenord är återställning omöjlig
    3. Sparplats – lokalt eller på en nätverksenhet
    4. Klicka på 💾 Skapa säkerhetskopia – en .calc2backup-fil skapas

    Innehåll: Alla favoriter, inställningar, teamfavoriter (valfritt), installerade plugins.

    Återställ säkerhetskopia


    Via Inställningar → 📂 Återställ säkerhetskopia:

    1. Välj säkerhetskopian (.calc2backup)
    2. Ange lösenordet
    3. Välj omfång: bara favoriter / bara inställningar / allt
    4. Klicka på 🔄 Återställ

    ⚠️ Vid återställning skrivs befintliga data över. Automatisk säkerhetskopiering av aktuella data erbjuds innan återställning.


    💡 Tips


  • $A$1 → absolut referens (rullgardinsmeny bredvid cellfälten)

  • Ctrl+S → spara formel i favoriter

  • Ctrl+C → kopiera formel (utanför inmatningsfält)

  • Ctrl+Z / Ctrl+Y → ångra / gör om

  • Ctrl+F12 → minimera / återställ fönstret (fungerar även när Calc2 är minimerat)

  • Delete-tangenten i favoritlistan → ta bort post

  • Formler kan justeras direkt i utdatafältet efter generering

  • 📁 Projektstruktur


    `
    Calc2.py ← huvudprogram
    plugin_manager.py ← plugin-hanterare
    IMPORTANT_NOTICE.md ← anmärkningar om plugin-skapande
    data/
    README_de.md / README_en.md / ... ← hjälp per språk
    REFERENZ_de.md / REFERENZ_en.md / ... ← funktionsreferens per språk
    language/
    languages.json ← gränssnittsöversättningar (38 språk)
    formula_explanations.json
    services/
    language_tool.py ← guide: lägga till nytt språk
    settings_service.py
    auth_service.py
    favorites_service.py
    network_sync.py
    install_service.py
    backup_service.py ← säkerhetskopiering och återställning
    json_validator.py ← kontroll och rättelse av languages.json / formula_explanations.json
    plugins/ ← plugin-mapp (skapas automatiskt)
    mitt_plugin/
    plugin.json
    formulas.json
    fonts/
    NotoSansDevanagari-Regular.ttf ← hindi-teckensnitt
    NotoSansArabic-Regular.ttf ← arabiskt teckensnitt (RTL)
    NotoSansHebrew-Regular.ttf ← hebreiskt teckensnitt (RTL)
    python/ ← inbäddad Python
    python.exe
    ...
    settings.json ← skapas automatiskt
    favoriter.json ← lokala favoriter (skapas automatiskt)
    `

    🧠 Tekniska höjdpunkter


  • Atomär filskrivning → förhindrar skadade filer vid sparning

  • Tjänstearkitektur → logik och gränssnitt är strikt åtskilda

  • Automatisk migrering → gamla favoritformat känns igen och konverteras

  • Robust felhantering → felaktiga filer leder inte till programkrasch

  • Syntaxmarkering → formler visas i färg

  • Mörkt läge → fullt stöd

  • Plugin-system → Calc2 kan utökas med egna formel-plugins

  • RTL-motor → automatisk igenkänning av RTL-språk, fullständig UI-spegling inkl. lämpliga teckensnitt

  • Säkerhetskopiering och återställning → AES-krypterade säkerhetskopior med namn och lösenord, selektiv återställning

  • JSON-validator → automatisk kontroll och rättelse av languages.json och formula_explanations.json inkl. landsnamn och obligatoriska fält

  • LibreOffice-källaformula_explanations.json fylls från den officiella LibreOffice Calc-dokumentationen (https://help.libreoffice.org)

  • Globalt kortkommandoCtrl+F12 fungerar på systemnivå via biblioteket keyboard (bakgrundstråd)

  • Licens


    Fritt att använda för personliga och kommersiella ändamål.