Revision history for Perl extension Spreadsheet::XLSX.

0.21  2026-11-15

    - Decode XML entities and numeric character references once in worksheet
      names before optional character conversion (RT #50705). Support lookup
      by decoded names and report undefined name conversion results.

    - Abort with a clear error when a string converter returns undef
      (RT #84528), while continuing to accept empty converted strings.

    - Decode predefined XML entities and numeric character references once
      in shared and inline strings, including rich text and phonetic hints
      (RT #93962). Decode before the optional converter, preserve literal
      entity text and add the original workbook as a regression fixture.

    - Resolve built-in number formats and apply row/column default styles
      when a cell has no explicit style (RT #101636). Cell styles override
      row styles, which override column defaults; preserve raw values.
      Add regression tests for decimals, percentages and built-in dates.

    - Resolve absolute and relative worksheet relationship targets and
      normalize dot segments (RT #86667). Report missing targets with sheet
      and relationship details; reject external targets and root traversal.
      Preserve chartsheet placeholders and add regression tests.

    - Replace legacy match and postmatch variables with local captures and
      match lengths (RT #70879), without raising the minimum Perl version.

    - Preserve token boundaries around escaped and quoted literals when
      detecting date formats (RT #87746). Add the original workbook and
      regression tests for date types, raw values and formatted output.

    - Handle line breaks and other XML whitespace in Relationship tags
      (RT #111087). Add regression tests for LF, CRLF and attribute order.

    - Avoid uninitialized-value warnings for undefined shared-string cell
      values during parsing and formatting (RT #114521). Preserve raw undef
      values and add regression tests.

    - Fix short and long weekday formatting and recognize standalone date
      and AM/PM formats as date/time cells (RT #117007). Ignore quoted and
      escaped literals during date-type detection; add regression tests.

    - Support inlineStr cells (RT #117462, #83399), including rich text,
      whitespace, empty strings, converters and separate phonetic metadata.
      Share text extraction with shared strings; add regression tests.

    - Fix AM/PM and A/P time formatting, including uppercase tokens, noon
      and midnight (RT #119170). Preserve raw date/time values and types.
    - Ignore the x15:workbookPr extension instead of rejecting it as a
      prefixed data element. Add the original RT #119170 workbook as a test.

    - Keep phonetic hints out of shared-string cell values (RT #122340).
      Expose hints and their properties separately as RPh and PhoneticPr.

    - Report obvious XML syntax errors and unsupported prefixed elements
      with the XML member name; recommend Spreadsheet::ParseXLSX for prefixed
      files (RT #124409). Document that XML is not fully validated.
    - Include worksheet, XML member and invalid address in cell-reference
      errors. No new XML parser dependency is required.

    - Preserve custom number formats referenced by multiple cell styles
      (RT #132420). Add regression tests for repeated format IDs.

    - Move MaxCol initialization outside the row loop in the SYNOPSIS
      example (RT #140481).

    - Remove unused variables from ValFmt (RT #158167).

    - Fix multiline cell values and value tags with attributes (GitHub PR #1).
      Preserve whitespace and add regression tests.

0.20  2026-10-29

    - Security: limit ZIP entry counts and uncompressed sizes; read members
      incrementally and reject inconsistent size metadata.
    - Security: validate number format IDs and escape regex lookups to prevent
      regex injection from crafted styles.
    - Security: reject out-of-range date values to prevent excessive CPU usage.
    - Security: validate cell references against XLSX worksheet limits before
      indexing cell arrays, preventing excessive allocation from invalid rows.
    - Add cpanfile for easy dependency installation.
    - Improve Readme.

0.19  2026-10-29

    - Security: replace string eval of number-format conditions with strict
      numeric comparisons; invalid conditions use the fallback format section.
      Prevents arbitrary Perl code execution when parsing crafted XLSX files.
    - Add regression tests for numeric conditions and malicious XLSX formats.

0.18

    - fix RT #117166: unformatted date values can no longer be retrieved, thx to lherschi

0.17

    - fix RT #139898: missing file from MANIFEST
    - fix RT #127829, #80565, #79016: [Warning] Argument "#N/A" isn't numeric in int

0.16

    - added GitHub repository
    - fix RT #125112: Update module name in comments and POD
    - improve POD
    - improve kwalitee test

0.15

    - revert a numeric formatting change which caused isssues with Spreadsheet::Read.

0.14  

    - change default date format to yyyy-mm-dd.  This matches Spreadsheet::ParseExcel.
    - handle xml tag attributes in varying order (RT #86667, et.al.)

0.13  Sun May 16 13:08:12 MSD 2010

    - ability to read xlsx from filehandle (RT #57483, thanks Sergey Pushkin)

0.12  Tue Oct  6 10:04:37 MSD 2009

    - sheets are now detected by relations (xl/_rels/workbook.xml.rels), not numbers (RT #50236, thanks Pat Mariani)

0.11  Mon Oct  5 19:03:46 MSD 2009

    - sheets numbering fixed (RT #50211, thanks endacoe)

0.1   Wed Mar 25 18:19:46 MSK 2009

    - bypassing empty sheets (thanks Lukasz Wilun for an example with diagrams);
    - rich text within a cell (by Rob Polocz);

0.09  Mon Jan 26 09:57:04 MSK 2009

    - fixed using of $1 after unsuccessful m// (thanks HMBRAND);

0.08  Mon Jan  5 18:07:57 MSK 2009

    - Perl version requirement lowered (thanks HMBRAND)

0.07  Thu Dec 18 09:46:18 MSK 2008  

    - "Use of uninitialized value ..." warnings suppressed (thanks Gregor Herrmann)
    
0.04  Fri Nov 14 09:25:47 MSK 2008

    - RE fixed for the case of opening <t ...> with attributes (thanks Loreyna Yeung)

0.06  Tue Dec 16 18:06:17 MSK 2008

    - files missed from MANIFEST and, therefore, from .tar.gz :-( Sorry, everybody!

0.05  Fri Dec 12 17:28:23 MSK 2008
    
    - a lot of fixes by Rob Polocz (dependency on Spreadsheet::ParseExcel introduced): 
    
    -- Added support for styles and formatted strings; 
    -- create and use ParseExcel Workbook, Spreadsheet, and Cell objects; 
    -- 1904 date convention support; 
    -- empty tag support; 
    -- received permission from the Spreadsheet::ParseExcel guys to leverage the formatting classes and check them in to this project.

0.03  Tue May 20 05:18:41 UTC 2008

    - fixed the incorrect mapping for columns > AA (thanks JMELTZER http://rt.cpan.org/Public/Bug/Display.html?id=36013)
    - added support for r:id attribute (Ibid)

0.02  Mon May 12 07:02:31 UTC 2008

    - fixed a bug with 1st dictionnary string (thanks SSIMMS: http://rt.cpan.org/Public/Bug/Display.html?id=35489)
    - prereq relaxed (thanx SSIMMS: http://rt.cpan.org/Public/Bug/Display.html?id=35490)

0.01  Thu Mar 13 09:41:52 2008

    - original version; created by h2xs 1.23 with options
        -A -X -n Spreadsheet::XLSC --skip-exporter --skip-autoloader


    
