Пересчет строки в значение в LibreOffice Calc - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть класс 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», я это уже учел, и это не решение, которое яищу.

1 Ответ

0 голосов
/ 31 декабря 2018

На основании вашего названия умножьте на 1:

Multiply text1">

...