Поскольку LibreOffice Calc поддерживает макросы, а встроенные функции несколько ограничены, я хотел бы написать свои собственные функции на Python, а затем использовать их в качестве формул в отдельных ячейках. В идеале у меня был бы файл Python вроде:
def VOL(a, b, c):
v = a*b*c
return v
либо встроенный в документ, либо в виде файла custom_functions.py
в прямом месте. После этого я смогу написать =VOL(A1, A2, B3)
в ячейке и рассчитать результат. Неправильный ввод или другие ошибки должны приводить к появлению текста ошибки в ячейке так же, как это делают встроенные функции calc.
Я могу перейти в Инструменты> Макросы> Упорядочить макросы ...> LibreOffice Basic. Это дает мне диалог, в котором я могу создать новую функцию, как я описал выше (я ее не тестировал). К сожалению, это требует написания на Basic, а не на Python. Я действительно не хочу изучать Basic только для этого, я хочу использовать свои знания и опыт в Python.
Если я зайду в Инструменты> Макросы> Упорядочить макросы ...> Python, параметры для создания новых макросов будут недоступны. Немного покопавшись в интернете, я обнаружил, что, очевидно, LibreOffice (ну, на самом деле, восходящий OpenOffice) не имеет своей собственной Python IDE "пока", поэтому они просто помещают в пользовательский интерфейс серую кнопку без объяснения в качестве заполнителя. Я говорю "пока" в кавычках, потому что я нашел людей, которые жалуются на это в 2012 году, просто чтобы сказать, что это будет исправлено в любой день.
Я также нашел некоторую информацию о написании расширений Python с использованием некоторой библиотеки взаимодействия Python. По-видимому, для этого требуется импортировать много здоровенных библиотек, даже для самых простых примеров требуются десятки строк сложного стандартного кода, и отладка, вероятно, является проблемой. Было бы намного проще просто написать обычный скрипт на Python, который считывает данные из электронной таблицы и затем записывает их обратно. Однако функции, которые я хочу, относительно тривиальны, и возможность эффективного просмотра и навигации по данным очень полезна для разработки и отладки моего поискового анализа, поэтому возможность определения функции в простом Python и ее использования внутри электронной таблицы Calc будет очень полезной. удобный. Есть ли способ сделать это?
Я использую LibreOffice 5.2.2.2 и Windows 7, я могу использовать Python 2 или 3, но предпочитаю 3.