https://bz.apache.org/ooo/show_bug.cgi?id=128567

          Issue ID: 128567
        Issue Type: DEFECT
           Summary: References to columns above 676 are wrong when
                    importing XML files
           Product: Calc
           Version: 4.1.14
          Hardware: PC
                OS: Windows, all
            Status: UNCONFIRMED
          Severity: Normal
          Priority: P5 (lowest)
         Component: code
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: ---

Created attachment 87177
  --> https://bz.apache.org/ooo/attachment.cgi?id=87177&action=edit
Example file demonstrating the error.

File spreadsheetml2ooo.xsl has already been patched in version 4.1.14 (Issue
81233) but now references columns above 676 are wrong. Below is a patch for
spreadsheetml2ooo.xsl replacing templates translate-unit and
number-to-character.
Files uof2odf.xsl and uof2odf_spreadsheet.xsl contain a wrong version of
translate-unit as well.

        <xsl:template name="translate-unit">
                <!-- convert cell position expression unit, R1C1, R3, C4 -->
                <xsl:param name="column-number"/>
                <xsl:param name="row-number"/>
                <xsl:param name="column-pos-style"/>
                <xsl:param name="row-pos-style"/>

                <xsl:variable name="ColumnLetters">
                        <xsl:call-template name="ConvertColumnNumber">
                                <xsl:with-param name="ColumnNumber"
select="$column-number"/>
                        </xsl:call-template>
                </xsl:variable>

                <!-- position styles are 'absolute' or 'relative', -->
                <xsl:choose>
                        <xsl:when test="$column-pos-style = 'absolute'">
                                <xsl:text>$</xsl:text>
                        </xsl:when>
                </xsl:choose>
                <xsl:value-of select="$ColumnLetters"/>

                <xsl:choose>
                        <xsl:when test="$row-pos-style ='absolute'">
                                <xsl:text>$</xsl:text>
                        </xsl:when>
                </xsl:choose>
                <xsl:value-of select="$row-number"/>
        </xsl:template>

        <xsl:template name="ConvertColumnNumber">
                <xsl:param name="ColumnNumber"/>
                <xsl:variable name="letters"
select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
                <xsl:choose>
                        <xsl:when test="$ColumnNumber &lt;= 26">
                                <xsl:value-of select="substring($letters,
$ColumnNumber, 1)"/>
                        </xsl:when>
                        <xsl:otherwise>
                                <xsl:call-template name="ConvertColumnNumber">
                                        <xsl:with-param name="ColumnNumber"
select="floor(($ColumnNumber - 1) div 26)"/>
                                </xsl:call-template>
                                <xsl:value-of select="substring($letters,
($ColumnNumber - 1) mod 26 + 1, 1)"/>
                        </xsl:otherwise>
                </xsl:choose>
        </xsl:template>

-- 
You are receiving this mail because:
You are the assignee for the issue.

Reply via email to