Невозможно создать макрос Python в Libre Office Calc

Я прочитал учебники, в которых объясняется, как создать макрос Python:

  • Я добавил папки Scripts и python, чтобы получить это: C:\Users\Myosotis\AppData\Roaming\LibreOffice\4\user\Scripts\python
  • Затем я создал файлbreak.py, в который поместил функцию с именем test:

{Код:

from scriptforge import CreateScriptService

def test(args=None)
    doc = CreateScriptService("Calc")
    doc.SetValue("G3","test")
    return None

}

Но когда я открываю всплывающее окно «Макросы Python», разрыв папки пуст:

Я хотел бы знать, почему, или хотя бы знать, где хранятся все эти «макросы приложений», чтобы я мог на них взглянуть.

Я использую Libre Office версии 24.2.3.2 (X86_64) в Windows 10.0.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Откройте приглашение PowerShell и выполните сценарий с помощью Python LibreOffice.

chdir "${env:ProgramFiles}\LibreOffice\program\"
./python "C:/Users/U/AppData/Roaming/LibreOffice/4/user/Scripts/python/break.py"

Это обнаруживает ошибку, которая, как вы можете видеть, связана с отсутствием : после оператора.

File "C:/Users/U/AppData/Roaming/LibreOffice/4/user/Scripts/python/break.py", line 3
    def test(args=None)
                      ^
SyntaxError: invalid syntax

В Windows расположение макроса «Приложение» (общее) обычно равно C:\Program Files\LibreOffice\share\Scripts\python.

Если вы еще этого не сделали, обязательно попробуйте расширение APSO для запуска макросов python-uno. И самоучитель.

В более крупных проектах я использую pylint для проверки синтаксиса. Кроме того, я ловлю и регистрирую исключения, например:

def log_exceptions(self, func):
    """Decorator method to log uncaught exceptions."""
    def wrapper(*args, **kwargs):
        try:
            func(*args, **kwargs)
        except:
            self._setup()
            self.logger.exception("Caught exception at top level.")
            # Re-raising is proper coding practice when catching all
            # exceptions, and we do so even though it will probably
            # have no effect, at least during runtime.
            raise

    return wrapper

def _setup(self):
    """Set up a minimalist file logger."""
    raise NotImplementedError()

Большое спасибо ! Я не думал, что Python работает как компилируемый язык при использовании с Libreoffice.

Myosotis 03.06.2024 18:15

@Myosotis: LibreOffice поставляется с CPython для Windows, который компилируется в промежуточную форму байт-кода, как это делает Java. Однако код Java UNO должен быть скомпилирован с такими файлами, как unoidl.jar, на отдельном этапе, в то время как CPython не требует явного отдельного этапа компиляции и даже может быть скомпилирован «на лету» в реальном сеансе. См. stackoverflow.com/questions/2998215/….

Jim K 04.06.2024 17:27

Другие вопросы по теме