You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@openoffice.apache.org by bu...@apache.org on 2023/01/11 18:28:20 UTC
[Issue 81233] spreadsheetml: Trouble with import from XML (format MS Excel 2003) to OpenOffice Calc
https://bz.apache.org/ooo/show_bug.cgi?id=81233
damjan@apache.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|CONFIRMED |RESOLVED
CC| |damjan@apache.org
Resolution|--- |FIXED
Latest|--- |4.2.0-dev
Confirmation in| |
--- Comment #10 from damjan@apache.org ---
Fixed by the below commit, resolving FIXED.
Thank you alex6684 for your brilliant investigation, and thank you everyone for
your bug report, sample file, testing and comments :-).
commit 577fe17932e0dec38662067d1a86e7fd6ae525b6
Author: Damjan Jovanovic
Date: Wed Jan 11 19:47:12 2023 +0200
Our XSLT-based MS Office 2003 SpreadsheetML format import filter, when doing
conversion from R1C1 style column references to our A1 style references, had a
bug where it was treating the column value as 0-based, and dividing by 26 to
find the 1st letter and taking the remainder when divided by 26 for the second
letter. Those numbers are then each converted to a letter [0 = nothing,
1 = "A", 2 = "B", ..., 26 = "Z"].
However since R1C1 is 1-based, and not 0-based, this breaks for column numbers
which are multiples of 26, as 26 mod 26 = 0, so the least significant digit is
converted to nothing while the most significant digit gets incremented too
early.
Fix this by converting the column number to 0-based by subtracting 1 before
calculation, then adding 1 to the least significant digit afterwards.
Also the fact we have 2 letters limited us to a maximum of 26^2 = 676 columns,
after which column references would wrap around. Fix this too, by adding a 3rd
letter, which lets us address a maximum of 17576 columns.
Add a sample file to our unit tests.
Found by: alex dot plantema at xs4all dot nl
Patch by: me
M main/filter/source/xslt/import/spreadsheetml/spreadsheetml2ooo.xsl
A test/testuno/data/uno/sc/fvt/Bug81233ColumnZReference.xml
M test/testuno/source/fvt/uno/sc/formula/TestFormulaDocs.java
--
You are receiving this mail because:
You are on the CC list for the issue.
You are the assignee for the issue.