LibreOffice Calc Kaavatyökalu


Python-työkalu LibreOffice Calc -kaavojen nopeaan luomiseen, testaamiseen ja hallintaan – suosikkijärjestelmällä, tiimin synkronoinnilla, monikielisyydellä ja laajennushallinnalla.

🚀 Ominaisuudet


  • 📑 4 välilehteä yli 60 funktiolla

  • 🌐 38 kieltä (ml. hindi automaattisella fontin asennuksella)

  • ⭐ Suosikkijärjestelmä (paikallinen ja tiimin synkronointi verkkoaseman kautta)

  • 🛠 Hallintapaneeli tiimin suosikeille (salasanasuojattu)

  • 📋 Suoraan kopioitavat kaavat syntaksin korostuksella

  • ✏️ Muokattava tulostuskenttä Kumoa/Tee uudelleen -tuella

  • 📖 Sisäänrakennettu ohje ja funktioviite (kielikohtainen)

  • 💾 Automaattinen tallennus (JSON, atomisesti kirjoitettu)

  • 🌙 Tumma tila

  • 🔌 Laajennushallinta omien kaavalaajennusten luomiseen

  • 🔤 RTL-tuki (oikealta vasemmalle) – kirjoitussuunnan automaattinen tunnistus

  • 🗄️ Varmuuskopio ja palautus – tallenna kaikki asetukset ja suosikit nimellä ja salasanalla

  • ⌨️ Yleinen pikanäppäin Ctrl+F12 pienentämiseen/palauttamiseen
  • 🔍 JSON-validaattori – languages.json ja formula_explanations.json automaattinen tarkistus ja korjaus

  • 🖥️ Käyttö


    1. Syötä tiedot

  • Solualue (esim. A1:A10)

  • Solu 1 / Solu 2 (esim. A1, B1)

  • Valinnainen parametri (esim. teksti tai indeksi)

  • Absoluuttinen viittaustila valittavissa: A1, $A1, A$1, $A$1

  • 2. Valitse funktio Valitse välilehti ja napsauta funktiota – kaava luodaan välittömästi.

    3. Muokkaa kaavaa Luotua kaavaa voi muokata suoraan tulostuskentässä.

    4. Kopioi Yhdellä napsautuksella leikepöydälle (syntaksin värit mukaan lukien).

    5. Käytä suosikkeja

  • ⭐ Tallenna → tallenna nykyinen kaava (Ctrl+S)

  • 📂 Lataa → käytä kaavaa uudelleen

  • ❌ Poista → Delete-näppäin tai painike

  • 🕐 Historia → viimeksi käytetyt kaavat

  • 📊 Välilehtien yleiskatsaus


    Välilehti 1 – Perustoiminnot + - \* / ^ SUM, AVERAGE, MIN, MAX, MEDIAN, COUNT, COUNTA, SUMPRODUCT

    Välilehti 2 – Edistyneet funktiot IF, AND, OR, NOT SUMIF, COUNTIF, AVERAGEIF, SUMIFS, STDEV, VAR, COUNTBLANK, LARGE

    Välilehti 3 – Päivämäärä ja teksti TODAY, NOW, YEAR, MONTH, DAY, DATE, DATEDIF, WEEKDAY CONCATENATE, LEN, LEFT, RIGHT, MID, UPPER, LOWER, TRIM

    Välilehti 4 – Haku ja pyöristys VLOOKUP, HLOOKUP, INDEX, MATCH, INDEX+MATCH ROUND, ROUNDUP, ROUNDDOWN, INT, TRUNC, ABS, MOD, SQRT, RAND


    📖 Kaavojen selitykset LibreOffice-dokumentaatiosta


    Tiedosto formula_explanations.json täytetään suoraan virallisesta LibreOffice Calc -dokumentaatiosta (https://help.libreoffice.org).

    Tietolähde ja päivitys


  • Kuvaukset, syntaksitiedot ja esimerkit haetaan LibreOffice:n viralliselta ohjesivustolta
  • Tuetut kielet riippuvat sivustolla saatavilla olevista käännöksistä
  • Tiedosto sisältää jokaiselle funktiolle: nimen, syntaksin, kuvauksen, esimerkin ja kategorian
  • Lisäyksiä tai korjauksia voi tehdä manuaalisesti (ks. JSON-validaattori)

  • formula_explanations.json-rakenne


    `json
    {
    "SUM": {
    "fi": {
    "syntax": "SUM(Luku1; Luku2; ...)",
    "description": "Laskee yhteen kaikki luvut solualueella.",
    "example": "=SUM(A1:A10)"
    },
    "en": {
    "syntax": "SUM(Number1; Number2; ...)",
    "description": "Adds all numbers in a cell range.",
    "example": "=SUM(A1:A10)"
    }
    }
    }
    `

    | Kenttä | Pakollinen | Kuvaus |
    |--------|-----------|--------|
    | syntax | ✅ | Kaavan syntaksi parametreineen |
    | description | ✅ | Funktion lyhyt kuvaus |
    | example | ✅ | Käyttöesimerkki valmiina kaavana |
    | note | ❌ | Valinnainen huomio |

    💡 Huomio: Jos kielelle ei löydy merkintää, sovellus palautuu automaattisesti englanninkieliseen versioon.

    ---

    🔍 JSON-validaattori kielitiedostoille


    Integroitu JSON-validaattori tarkistaa ja korjaa languages.json- ja formula_explanations.json-tiedostot johdonmukaisuuden, täydellisyyden ja oikeiden maaninitysten osalta.

    Saavutettavissa: Asetukset → 🔍 JSON-validaattori.

    Mitä tarkistetaan?


    #### languages.json

  • ✅ Kaikki 38 kieltä löytyvät (ISO 639-1 -kielikoodin mukaan)
  • ✅ Oikeat maa- ja kielinimet (esim. "fi""Suomi")
  • ✅ Ei päällekkäisiä kielikoodeja
  • ✅ Pakolliset kentät läsnä: name, native_name, flag, rtl
  • ✅ RTL-lippu asetettu oikein (Arabia, Heprea, Persia, Urdu → "rtl": true)

  • #### formula_explanations.json

  • ✅ Kaikki 4 välilehden funktiot kirjattu
  • ✅ Pakolliset kentät läsnä: syntax, description, example
  • ✅ Ei tyhjiä kenttiä ("" tai null)
  • ✅ Kielikoodit vastaavat languages.json-tiedostoa

  • Korjaustoiminnot


    | Virhetyyppi | Automaattinen korjaus |
    |-------------|----------------------|
    | Väärä maanimi | Korvataan ISO-standardin mukaisella oikealla nimellä |
    | Puuttuva kielimerkintä | Täytetään englanninkielisellä varamerkinnällä |
    | Tyhjä pakollinen kenttä | Merkitään "[MISSING]" manuaalista tarkistusta varten |
    | Päällekkäinen merkintä | Kaksoiskappaleet poistetaan, täydellisempi säilytetään |
    | Väärä RTL-lippu | Korjataan automaattisesti tunnettujen RTL-koodien perusteella |

    Käyttö


    1. Avaa Asetukset → 🔍 JSON-validaattori
    2. Valitse tiedosto: languages.json tai formula_explanations.json (tai molemmat)
    3. 🔎 Tarkista – näyttää kaikki löydetyt ongelmat
    4. 🛠 Korjaa automaattisesti – korjaa kaikki automaattisesti ratkaistavissa olevat virheet
    5. 💾 Tallenna – kirjoittaa korjatun tiedoston atomisesti
    6. 📋 Vie raportti (valinnainen) – tallentaa tekstitiedoston kaikilla löydöksillä

    ⚠️ Huomio: Ennen jokaista automaattista korjausta luodaan varmuuskopio alkuperäisestä tiedostosta (languages.json.bak / formula_explanations.json.bak).

    ⭐ Suosikkijärjestelmä


  • Tallenna ja käytä uudelleen omia kaavoja

  • Omat suosikit ja tiimin suosikit erillään

  • Tiimin suosikit ovat vain luku -tilassa (vain järjestelmänvalvoja voi muokata)

  • Kaksoiskappaleet estetään

  • Omien suosikkien vapaa järjestely

  • Synkronointi verkkoaseman kautta (valinnainen asetus)

  • Tiimin synkronointi


    Asetukset → 🌐 Verkkoasema -kohdasta voi syöttää verkkoaseman osoitteen (esim. \\\\Palvelin\\Jako\\kaavat).

  • Käynnistyksen yhteydessä: verkkosuosikit tallennetaan paikallisesti (offline-varakopio)

  • Tallennuksen yhteydessä: omat kaavat kirjoitetaan verkkoon, tiimin kaavat jäävät koskemattomiksi

  • 🛠 Hallintapaneeli


    Saavutettavissa 🛠-painikkeella. Ensimmäisellä napsautuksella asetetaan salasana (PBKDF2-SHA256, vain tiiviste tallennetaan).

  • Tiimin kaavojen lisääminen, muokkaaminen ja poistaminen

  • Salasanan vaihtaminen

  • Muutokset kirjoitetaan suoraan verkkoasemalle

  • 🔌 Laajennushallinta


    Laajennushallinta (plugin_manager.py) on itsenäinen työkalu omien kaavalaajennusten luomiseen ja hallintaan Calc2-ohjelmalle. Se sijaitsee samassa kansiossa kuin Calc2.py ja käynnistetään 🔌-painikkeella Calc2.py:ssä:

    Toiminnot


  • Luo uusi laajennus – vaiheittainen ohjattu toiminto (nimi, kaavat, käännökset, yhteenveto)

  • Lisää kaavoja – täydennä olemassa olevaa laajennusta kaavoilla

  • Muokkaa käännöksiä – käännä kaavanimet kaikkiin 38 kieleen

  • Avaa laajennuskansio – suoraan tiedostohallinnassa

  • Poista laajennus – turvallisuusvahvistuksella

  • Laajennuksen rakenne


    Jokainen laajennus sijaitsee alikansiona plugins/-hakemistossa ja koostuu kahdesta tiedostosta:

    `
    plugins/
    oma_laajennus/
    plugin.json ← metatiedot (nimi, versio, tekijä, kuvaus)
    formulas.json ← kaavat käännöksineen
    `

    Esimerkki plugin.json:

    `
    {
    "id": "oma_laajennus",
    "enabled": true,
    "version": "1.0",
    "author": "Sinun Nimesi",
    "icon": "💰",
    "name": { "en": "Finance Formulas", "fi": "Talouskaavat" },
    "description": { "en": "Useful formulas for financial calculations." }
    }
    `

    Esimerkki formulas.json:

    `
    [
    {
    "formula": "=SUM(A1:A10)",
    "name": { "en": "Sum of range", "fi": "Alueen summa" },
    "description": { "en": "Adds all values in A1:A10." },
    "category": { "en": "Basic", "fi": "Perustoiminnot" }
    }
    ]
    `

    Tärkeä huomio (⚠️ Important Notice)


    Laajennushallinnassa on painike ⚠️ Important Notice. Napsauttamalla avautuu ikkuna, jossa on kaikki laajennusten oikean luomisen säännöt englanniksi. Samat tiedot löytyvät myös tiedostosta IMPORTANT_NOTICE.md.

    🌐 Monikielisyys


    38 kieltä saatavilla, vaihdettavissa suoraan sovelluksessa.
    Uusia kieliä voi lisätä 🌍-painikkeella ohjatun kielitoiminnon avulla.

    Huomio hindistä (हिंदी): Ensimmäisellä kertaa hindiin vaihdettaessa asennetaan kerran *Noto Sans Devanagari* -fontti järjestelmätasolla. Windows pyytää järjestelmänvalvojan oikeuksia.

    🔤 RTL-tuki (oikealta vasemmalle)


    Oikealta vasemmalle kirjoitettavat kielet tunnistetaan automaattisesti ja koko käyttöliittymä peilataan:

  • Arabia (عربي) – automaattinen RTL-tunnistus
  • Heprea (עברית) – automaattinen RTL-tunnistus
  • Persia / Farsi (فارسی) – automaattinen RTL-tunnistus
  • Urdu (اردو) – automaattinen RTL-tunnistus

  • Mitä muuttuu RTL-tilassa: Koko UI-asettelu peilataan, syöttökentät käyttävät RTL-tasausta, fontti vaihtuu automaattisesti RTL-yhteensopivaan (esim. *Noto Sans Arabic*, *Noto Sans Hebrew*).

    💡 Huomio: Luodut LibreOffice-kaavat pysyvät aina LTR-syntaksissa – vain käyttöliittymä vaihtaa suuntaa.


    🗄️ Varmuuskopio ja palautus


    Varmuuskopion luominen


    Asetukset → 🗄️ Luo varmuuskopio -kohdasta:

    1. Nimi – vapaavalintainen nimitys (esim. Varmuuskopio_toukokuu_2025)
    2. Salasana – varmuuskopio salataan AES:llä; ilman salasanaa palautus ei onnistu
    3. Tallennuspaikka – paikallinen tai verkkoasema
    4. Napsauta 💾 Luo varmuuskopio – luodaan .calc2backup-tiedosto

    Sisältö: Kaikki suosikit, asetukset, tiimin suosikit (valinnainen), asennetut laajennukset.

    Varmuuskopion palauttaminen


    Asetukset → 📂 Palauta varmuuskopio -kohdasta:

    1. Valitse varmuuskopiotiedosto (.calc2backup)
    2. Anna salasana
    3. Valitse palautuslaajuus: vain suosikit / vain asetukset / kaikki
    4. Napsauta 🔄 Palauta

    ⚠️ Palautuksen yhteydessä olemassa olevat tiedot ylikirjoitetaan. Ennen palautusta tarjotaan automaattinen varmuuskopio nykyisistä tiedoista.


    💡 Vinkit


  • $A$1 → absoluuttinen viittaus (pudotusvalikko solukenttien vieressä)

  • Ctrl+S → tallenna kaava suosikkeihin

  • Ctrl+C → kopioi kaava (syöttökenttien ulkopuolella)

  • Ctrl+Z / Ctrl+Y → Kumoa / Tee uudelleen

  • Ctrl+F12 → pienennä/palauta ikkuna (toimii myös silloin kun Calc2 on pienennetty)

  • Delete-näppäin suosikkiluettelossa → poista merkintä

  • Kaavoja voi muokata suoraan tulostuskentässä luomisen jälkeen

  • 📁 Projektin rakenne


    `
    Calc2.py ← pääohjelma
    plugin_manager.py ← laajennushallinta
    IMPORTANT_NOTICE.md ← ohjeet laajennusten luomiseen
    data/
    README_fi.md / README_en.md / ... ← ohje kielikohtaisesti
    VIITE_fi.md / VIITE_en.md / ... ← funktioviite kielikohtaisesti
    language/
    languages.json ← käyttöliittymän käännökset (38 kieltä)
    formula_explanations.json
    services/
    language_tool.py ← ohjattu toiminto: lisää uusi kieli
    settings_service.py
    auth_service.py
    favorites_service.py
    network_sync.py
    install_service.py
    backup_service.py ← varmuuskopio ja palautus
    json_validator.py ← languages.json / formula_explanations.json tarkistus ja korjaus
    plugins/ ← laajennuskansio (luodaan automaattisesti)
    oma_laajennus/
    plugin.json
    formulas.json
    fonts/
    NotoSansDevanagari-Regular.ttf ← hindi-fontti
    NotoSansArabic-Regular.ttf ← arabia-fontti (RTL)
    NotoSansHebrew-Regular.ttf ← heprea-fontti (RTL)
    python/ ← upotettu Python
    python.exe
    ...
    settings.json ← luodaan automaattisesti
    suosikit.json ← paikalliset suosikit (luodaan automaattisesti)
    `

    🧠 Tekniset erityispiirteet


  • Atominen tiedostokirjoitus → estää tiedostojen vahingoittumisen tallennuksen aikana

  • Palveluarkkitehtuuri → logiikka ja käyttöliittymä tiukasti erotettu toisistaan

  • Automaattinen siirto → vanhat suosikkiformaatit tunnistetaan ja muunnetaan

  • Vankka virheenkäsittely → vialliset tiedostot eivät kaada sovellusta

  • Syntaksin korostus → kaavat näytetään värillisinä

  • Tumma tila → täysin tuettu

  • Laajennusjärjestelmä → Calc2 on laajennettavissa omilla kaavalaajennuksilla

  • RTL-moottori → RTL-kielten automaattinen tunnistus, täydellinen UI:n peilaus sopivine fontteineen

  • Varmuuskopio ja palautus → AES-salatut varmuuskopiot nimellä ja salasanalla, valikoiva palautus

  • JSON-validaattorilanguages.json ja formula_explanations.json automaattinen tarkistus ja korjaus ml. maanimet ja pakolliset kentät

  • LibreOffice-lähdeformula_explanations.json täytetään virallisesta LibreOffice Calc -dokumentaatiosta (https://help.libreoffice.org)

  • Yleinen pikanäppäinCtrl+F12 toimii järjestelmätasolla keyboard-kirjaston kautta (taustasäie)

  • Lisenssi


    Vapaasti käytettävissä henkilökohtaisiin ja kaupallisiin tarkoituksiin.