Recasting a STRING into a VALUE in LibreOffice Calc

1.4k Views Asked by At

I have a Python class that does some currency conversion and string formatting of numbers. It takes polymorphic input, but only spits out a stringified number. I can push those stringified numbers up to a LibreOffice Calc in Python easy enough:

stringifiednumber = str("1.01")
cell_a1 = sheet1.getCellRange("A1")
cell_a1.String = stringifiednumber

This actually works nicely since the builtin currency formats in Calc work just fine with stringified numbers.

What doesn't work is formulas, or sort of doesn't work. Calling SUM(A1:A2) will not see the stringified A1. There is a workaround (forgive me it is late and I forget it exactly but it is similar to:) =SUMRECORD(VALUE(A1:A2)).

As I understand it, each cell has a memory location for a number, a string, and a formula. The formula only acts on the VALUE memory location.

Through the spreadsheet UI, I can convert one cell type to another during a copy. To do that I just put the following formula in A2, and it converts STRING(A1) to VALUE( A2):

# formula placed in A2

    =VALUE(A1)

but that only works by copying one cell to another. Obviously there is an internal recasting function within the spreadsheet that is doing the conversion during the copy.

What I want to do, is write a stringified number to the spreadsheet (as above) and then call the spreadsheets native recasting function in place from Python, so that VALUE(A1) is recast from STRING(A1).

If I knew what the recasting function was I could just call it after every string write. This would make macros in the UI work like the user expects them to work.

If your answer is: "do type conversion Python-side", I've already considered that, and it is not the solution I'm looking for.

1

There are 1 best solutions below

1
pnuts On

Based on your Title, multiply by 1:

Multiply text "6" by <code>1</code>