LibreOffice Calc Помощник формул


Инструмент на Python для быстрого создания, тестирования и управления формулами LibreOffice Calc — с системой избранного, синхронизацией команды, многоязычностью и менеджером плагинов.

🚀 Возможности


  • 📑 4 вкладки с более чем 60 функциями

  • 🌐 38 языков (в том числе хинди с автоматической установкой шрифта)

  • ⭐ Система избранного (локально и синхронизация команды через сетевой диск)

  • 🛠 Панель администратора для избранного команды (защита паролем)

  • 📋 Готовые к копированию формулы с подсветкой синтаксиса

  • ✏️ Редактируемое поле вывода с отменой/повтором действий

  • 📖 Встроенная справка и справочник функций (для каждого языка)

  • 💾 Автоматическое сохранение (JSON, атомарная запись)

  • 🌙 Тёмная тема

  • 🔌 Менеджер плагинов для создания собственных плагинов формул

  • 🔤 Поддержка RTL (справа налево) – автоматическое определение направления письма

  • 🗄️ Резервное копирование и восстановление – сохраните все настройки и избранное с именем и паролем

  • ⌨️ Глобальное сочетание клавиш Ctrl+F12 для сворачивания/восстановления окна
  • 🔍 Валидатор JSON – автоматическая проверка и исправление languages.json и formula_explanations.json

  • 🖥️ Использование


    1. Ввод данных

  • Диапазон ячеек (например, A1:A10)

  • Ячейка 1 / Ячейка 2 (например, A1, B1)

  • Необязательный параметр (например, текст или индекс)

  • Выбор режима абсолютной ссылки: A1, $A1, A$1, $A$1

  • 2. Выбор функции Выберите вкладку и нажмите на функцию — формула будет сгенерирована мгновенно.

    3. Настройка формулы Сгенерированную формулу можно редактировать прямо в поле вывода.

    4. Копирование Перенос в буфер обмена одним щелчком (включая цвета синтаксиса).

    5. Использование избранного

  • ⭐ Сохранить → сохранить текущую формулу (Ctrl+S)

  • 📂 Загрузить → повторно использовать формулу

  • ❌ Удалить → клавиша Delete или кнопка

  • 🕐 История → недавно использованные формулы

  • 📊 Обзор вкладок


    Вкладка 1 – Основные функции + - * / ^ SUM, AVERAGE, MIN, MAX, MEDIAN, COUNT, COUNTA, SUMPRODUCT

    Вкладка 2 – Расширенные функции IF, AND, OR, NOT SUMIF, COUNTIF, AVERAGEIF, SUMIFS, STDEV, VAR, COUNTBLANK, LARGE

    Вкладка 3 – Дата и текст TODAY, NOW, YEAR, MONTH, DAY, DATE, DATEDIF, WEEKDAY CONCATENATE, LEN, LEFT, RIGHT, MID, UPPER, LOWER, TRIM

    Вкладка 4 – Поиск и округление VLOOKUP, HLOOKUP, INDEX, MATCH, INDEX+MATCH ROUND, ROUNDUP, ROUNDDOWN, INT, TRUNC, ABS, MOD, SQRT, RAND


    📖 Пояснения к формулам из документации LibreOffice


    Файл formula_explanations.json заполняется напрямую из официальной документации LibreOffice Calc (https://help.libreoffice.org).

    Источник данных и обновление


  • Описания, информация о синтаксисе и примеры берутся с официального сайта справки LibreOffice
  • Поддерживаемые языки зависят от доступных переводов на сайте
  • Файл содержит для каждой функции: название, синтаксис, описание, пример и категорию
  • Дополнения или исправления можно вносить вручную (см. Валидатор JSON)

  • Структура formula_explanations.json


    `json
    {
    "SUM": {
    "ru": {
    "syntax": "SUM(Число1; Число2; ...)",
    "description": "Суммирует все числа в диапазоне ячеек.",
    "example": "=SUM(A1:A10)"
    },
    "en": {
    "syntax": "SUM(Number1; Number2; ...)",
    "description": "Adds all numbers in a cell range.",
    "example": "=SUM(A1:A10)"
    }
    }
    }
    `

    | Поле | Обязательное | Описание |
    |------|-------------|---------|
    | syntax | ✅ | Синтаксис формулы с параметрами |
    | description | ✅ | Краткое описание функции |
    | example | ✅ | Пример использования в виде готовой формулы |
    | note | ❌ | Необязательная заметка |

    💡 Примечание: Если для языка нет записи, приложение автоматически переключается на английскую версию.

    ---

    🔍 Валидатор JSON для языковых файлов


    Встроенный Валидатор JSON проверяет и исправляет languages.json и formula_explanations.json на согласованность, полноту и корректность названий стран. Доступен через Настройки → 🔍 Валидатор JSON.

    Что проверяется?


    #### languages.json

  • ✅ Все 38 языков присутствуют (по коду ISO 639-1)
  • Корректные названия стран и языков (например, "ru""Русский")
  • ✅ Нет дублирующихся кодов языков
  • ✅ Обязательные поля присутствуют: name, native_name, flag, rtl
  • ✅ Флаг RTL установлен правильно (Арабский, Иврит, Персидский, Урду → "rtl": true)

  • #### formula_explanations.json

  • ✅ Все функции из 4 вкладок зарегистрированы
  • ✅ Обязательные поля присутствуют: syntax, description, example
  • ✅ Нет пустых полей ("" или null)
  • ✅ Коды языков соответствуют languages.json

  • Функции исправления


    | Тип ошибки | Автоматическое исправление |
    |-----------|--------------------------|
    | Неверное название страны | Заменяется правильным по стандарту ISO |
    | Отсутствующая запись языка | Заполняется английским резервным вариантом |
    | Пустое обязательное поле | Помечается как "[MISSING]" для ручной проверки |
    | Дублирующаяся запись | Дубликаты удаляются, более полная запись сохраняется |
    | Неверный флаг RTL | Автоматически исправляется на основе известных RTL-кодов |

    Как использовать


    1. Откройте Настройки → 🔍 Валидатор JSON
    2. Выберите файл: languages.json или formula_explanations.json (или оба)
    3. 🔎 Проверить – показывает все найденные проблемы
    4. 🛠 Исправить автоматически – решает все автоматически исправляемые ошибки
    5. 💾 Сохранить – атомарно записывает исправленный файл
    6. 📋 Экспортировать отчёт (необязательно) – сохраняет текстовый файл со всеми результатами

    ⚠️ Примечание: Перед каждым автоматическим исправлением создаётся резервная копия оригинального файла (languages.json.bak / formula_explanations.json.bak).

    ⭐ Система избранного


  • Сохранение и повторное использование собственных формул

  • Разделение между личным избранным и избранным команды

  • Избранное команды защищено от записи (редактирование доступно только администратору)

  • Предотвращение дублирующихся записей

  • Произвольная сортировка личного избранного

  • Синхронизация через сетевой диск (настраивается по желанию)

  • Синхронизация команды


    В разделе Настройки → 🌐 Сетевой путь можно указать сетевой диск (например, \\\\Сервер\\Общий\\формулы).

  • При запуске: избранное из сети сохраняется локально (резервная копия для работы офлайн)

  • При сохранении: личные формулы записываются в сеть, формулы команды остаются без изменений

  • 🛠 Панель администратора


    Доступна через кнопку 🛠. При первом нажатии задаётся пароль (PBKDF2-SHA256, хранится только хеш).

  • Добавление, редактирование и удаление формул команды

  • Смена пароля

  • Запись изменений непосредственно на сетевой диск

  • 🔌 Менеджер плагинов


    Менеджер плагинов (plugin_manager.py) — самостоятельный инструмент для создания и управления собственными плагинами формул для Calc2. Он находится в той же папке, что и Calc2.py, и запускается кнопкой 🔌 в Calc2.py:

    Функции


  • Создать новый плагин — пошаговый мастер (название, формулы, переводы, сводка)

  • Добавить формулы — добавление формул в существующий плагин

  • Редактировать переводы — перевод названий формул на все 38 языков

  • Открыть папку плагинов — напрямую в проводнике файлов

  • Удалить плагин — с запросом подтверждения

  • Структура плагина


    Каждый плагин располагается как подпапка в plugins/ и состоит из двух файлов:

    `
    plugins/
    мой_плагин/
    plugin.json ← метаданные (название, версия, автор, описание)
    formulas.json ← формулы с переводами
    `

    Пример plugin.json:

    `
    {
    "id": "мой_плагин",
    "enabled": true,
    "version": "1.0",
    "author": "Ваше имя",
    "icon": "💰",
    "name": { "en": "Finance Formulas", "ru": "Финансовые формулы" },
    "description": { "en": "Useful formulas for financial calculations." }
    }
    `

    Пример formulas.json:

    `
    [
    {
    "formula": "=SUM(A1:A10)",
    "name": { "en": "Sum of range", "ru": "Сумма диапазона" },
    "description": { "en": "Adds all values in A1:A10." },
    "category": { "en": "Basic", "ru": "Основные" }
    }
    ]
    `

    Важное примечание (⚠️ Important Notice)


    В менеджере плагинов есть кнопка ⚠️ Important Notice. При нажатии открывается окно со всеми правилами корректного создания плагинов на английском языке. Та же информация содержится в файле IMPORTANT_NOTICE.md.

    🌐 Многоязычность


    Доступно 38 языков, переключаемых прямо в приложении.
    Новые языки можно добавить через кнопку 🌍 с помощью мастера языков.

    Примечание о хинди (हिंदी): При первом переключении на хинди шрифт *Noto Sans Devanagari* будет однократно установлен на уровне системы. При этом Windows запросит права администратора.

    🔤 Поддержка RTL (справа налево)


    Языки с письмом справа налево определяются автоматически, и весь интерфейс зеркалируется:

  • Арабский (عربي) – автоматическое определение RTL
  • Иврит (עברית) – автоматическое определение RTL
  • Персидский / Фарси (فارسی) – автоматическое определение RTL
  • Урду (اردو) – автоматическое определение RTL

  • Что меняется в режиме RTL: Весь макет интерфейса зеркалируется, поля ввода используют выравнивание RTL, шрифт автоматически меняется на совместимый с RTL (например, *Noto Sans Arabic*, *Noto Sans Hebrew*).

    💡 Примечание: Сгенерированные формулы LibreOffice всегда остаются в синтаксисе LTR — меняется только направление интерфейса.


    🗄️ Резервное копирование и восстановление


    Создание резервной копии


    Через Настройки → 🗄️ Создать резервную копию:

    1. Имя – произвольное название (например, Резервная_Май_2025)
    2. Пароль – копия шифруется AES; без пароля восстановление невозможно
    3. Место сохранения – локально или на сетевом диске
    4. Нажмите 💾 Создать резервную копию – создаётся файл .calc2backup

    Содержимое: Всё избранное, настройки, избранное команды (необязательно), установленные плагины.

    Восстановление резервной копии


    Через Настройки → 📂 Восстановить резервную копию:

    1. Выберите файл (.calc2backup)
    2. Введите пароль
    3. Выберите область: только избранное / только настройки / всё
    4. Нажмите 🔄 Восстановить

    ⚠️ При восстановлении существующие данные перезаписываются. Перед восстановлением предлагается автоматическое резервное копирование текущих данных.


    💡 Советы


  • $A$1 → абсолютная ссылка (выпадающий список рядом с полями ячеек)

  • Ctrl+S → сохранить формулу в избранное

  • Ctrl+C → копировать формулу (вне полей ввода)

  • Ctrl+Z / Ctrl+Y → отменить / повторить

  • Ctrl+F12 → свернуть / восстановить окно (работает даже когда Calc2 свёрнут)

  • Клавиша Delete в списке избранного → удалить запись

  • Формулы можно редактировать прямо в поле вывода после генерации

  • 📁 Структура проекта


    `
    Calc2.py ← основная программа
    plugin_manager.py ← менеджер плагинов
    IMPORTANT_NOTICE.md ← примечания по созданию плагинов
    data/
    README_de.md / README_en.md / ... ← справка для каждого языка
    REFERENZ_de.md / REFERENZ_en.md / ... ← справочник функций для каждого языка
    language/
    languages.json ← переводы интерфейса (38 языков)
    formula_explanations.json
    services/
    language_tool.py ← мастер: добавление нового языка
    settings_service.py
    auth_service.py
    favorites_service.py
    network_sync.py
    install_service.py
    backup_service.py ← резервное копирование и восстановление
    json_validator.py ← проверка и исправление languages.json / formula_explanations.json
    plugins/ ← папка плагинов (создаётся автоматически)
    мой_плагин/
    plugin.json
    formulas.json
    fonts/
    NotoSansDevanagari-Regular.ttf ← шрифт хинди
    NotoSansArabic-Regular.ttf ← арабский шрифт (RTL)
    NotoSansHebrew-Regular.ttf ← иврит шрифт (RTL)
    python/ ← встроенный Python
    python.exe
    ...
    settings.json ← создаётся автоматически
    избранное.json ← локальное избранное (создаётся автоматически)
    `

    🧠 Технические особенности


  • Атомарная запись файлов → предотвращает повреждение файлов при сохранении

  • Сервисная архитектура → логика и интерфейс строго разделены

  • Автоматическая миграция → старые форматы избранного распознаются и конвертируются

  • Надёжная обработка ошибок → повреждённые файлы не приводят к сбою программы

  • Подсветка синтаксиса → формулы отображаются в цвете

  • Тёмная тема → полная поддержка

  • Система плагинов → Calc2 можно расширять собственными плагинами формул

  • Движок RTL → автоматическое определение RTL-языков, полное зеркалирование интерфейса с подходящими шрифтами

  • Резервное копирование и восстановление → резервные копии с шифрованием AES, именем и паролем, выборочное восстановление

  • Валидатор JSON → автоматическая проверка и исправление languages.json и formula_explanations.json включая названия стран и обязательные поля

  • Источник LibreOfficeformula_explanations.json заполняется из официальной документации LibreOffice Calc (https://help.libreoffice.org)

  • Глобальное сочетание клавишCtrl+F12 работает на уровне системы через библиотеку keyboard (фоновый поток)

  • Лицензия


    Свободно для личного и коммерческого использования.