Handling of worksheet functions from Excel 2010 and newer

Kohei Yoshida kohei.yoshida at collabora.com
Mon Nov 11 15:43:34 PST 2013


On Tue, 2013-11-12 at 00:30 +0100, Markus Mohrhard wrote:
> Hey,
> 
> 
> 2013/11/11 Kohei Yoshida <kohei.yoshida at collabora.com>
>         Hi there,
>         
>         Eike brought to my attention that my recent change to use the
>         internal
>         API to import formulas from xlsx broke the extra handling that
>         the UNO
>         API was doing to translate some of the newer Excel functions
>         from Excel
>         2010 and newer.  These new functions are typically prefixed
>         with _xlfn.
>         in the XML stream so that when the function name is e.g.
>         BETA.DIST, it
>         would appear as _xlfn.BETA.DIST in the sheet stream where the
>         formula
>         cell is stored.
>         
>         Long story short, the way I've decided to solve this was to
>         add another
>         set of function names and associate it with formula language
>         XL_ENGLISH,
>         which is, for now, only used for importing xlsx in a
>         significant way.
>         
>         So, when you guys have implemented these new functions in Calc
>         core, but
>         have trouble importing them from xlsx, please take a look at
>         resource
>         RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML in
>         formula/source/core/resource/core_resource.src and see if the
>         stored
>         function name matches what's in the XML stream.
>         
>         Hopefully this fixes the old functionality from the UNO formar
>         parser
>         that we were missing in ScCompiler.
>         
> 
> 
> And a small request by me. Could we maybe add always directly an
> import/export test when we add a new function?

I did my share for my change.  The ones that were missing from the test
which went unnoticed by my change, I added them.

That said, I can't write all necessary tests on my own, so I'd much like
to get more help from others who work in this area.

> Adding an import/export test for a function is normally a task of a
> few minutes and should help us prevent regressions with these
> functions.

Agreed, though I have to say that "a task of a few minutes" is a bit of
a stretch. ;-)

For more complex functions, understanding the functions may require a
bit of a trial and error, and coming up with a suitable test case may
take a lot more than just "a few minutes"....

But I do agree with trying to make the writing of tests more a normal
part of our day to day development.

Kohei





More information about the LibreOffice mailing list