Skip to content

v6.16.1

Latest

Choose a tag to compare

@aVadim483 aVadim483 released this 29 Aug 14:42

Fixed

  • Shared state between workbooks – with two workbooks open in one process the number formats of the locale (@money, @DATETIME, …) and the default font of the workbook created last were applied to the other one, so a report could be saved with a foreign currency or date format. StyleManager kept a reference to itself in a static property and the static normalizeFont() / numberFormatStandardized() read the state from there. There was no workaround: unset() of the foreign workbook did not help, the static property held it alive
  • The style cache shared between workbooks – Sheet::_writeRow() kept the cache of cell styles in a static variable common to all sheets of all workbooks. Because the current row is flushed lazily, writing into two workbooks alternately gave the cells of one of them the style indexes of the other, which silently lost their formats
  • An R1C1 reference shifted out of the sheet (=R[-4]C[-1] written to B2) was written to the file as is, and Excel refused to open such a file. It becomes #REF! now, the way Excel does it
  • A range in R1C1 notation was converted by halves – the pattern did not know about :, so =SUM(R[-4]C[-1]:RC[-1]) could produce a hybrid like SUM(R[-4]C[-1]:A2). A range is captured as a whole now

API

  • StyleManager::normalizeFont() takes an optional second argument – the style manager whose default font is used as the base. The old signature keeps working (the last created workbook is used then), but a caller that knows its own manager should pass it
  • StyleManager::numberFormatStandardized() became a method of the instance (it was private static)