У меня есть класс Python, который выполняет некоторую конвертацию валют и форматирование чисел в строках.Он принимает полиморфный ввод, но выплевывает только строковое число.Я могу достаточно легко передать эти строковые числа в LibreOffice Calc в Python:
stringifiednumber = str("1.01")
cell_a1 = sheet1.getCellRange("A1")
cell_a1.String = stringifiednumber
Это на самом деле хорошо работает, так как форматы встроенной валюты в Calc прекрасно работают со строковыми числами.
Что не работает, так это формулы или что-то вроде того, что не работает.Вызов SUM(A1:A2)
не увидит строковый A1.Есть обходной путь (простите, я поздно, и я точно об этом забываю, но он похож на :) =SUMRECORD(VALUE(A1:A2))
.
Насколько я понимаю, в каждой ячейке есть ячейка памяти для числа, строки и формулы.Формула действует только на ячейку памяти VALUE
.
Через пользовательский интерфейс электронной таблицы я могу конвертировать один тип ячейки в другой во время копирования.Для этого я просто помещаю следующую формулу в A2, и она преобразует STRING(A1)
в VALUE( A2)
:
# formula placed in A2
=VALUE(A1)
, но это работает только путем копирования одной ячейки в другую.Очевидно, что в электронной таблице есть внутренняя функция преобразования, которая выполняет преобразование во время копирования.
Что я хочу сделать, это записать строковое число в электронную таблицу (как указано выше) и затем вызвать собственное преобразование электронных таблиц.функция на месте из Python, поэтому VALUE (A1) переделывается из STRING (A1).
Если бы я знал, что такое функция преобразования, я мог бы просто вызывать ее после каждой записи строки.Это приведет к тому, что макросы в пользовательском интерфейсе будут работать так, как ожидает от них пользователь.
Если ваш ответ: «делать преобразование типов на стороне Python», я это уже учел, и это не решение, которое яищу.