Revision history for Perl module Spreadsheet::WriteExcel.

2.25 September 9 - Minor

    + Fix for set_properties() bug due to 5.10/5.8 UTF-8 differences.
    + Fix for failing tests due to localtime() issues.

2.24 September 6 - Minor

    + Added set_properties() method to set document properties.
      Added test suite and example.

2.23 August 10 2008 - Major

    + Added Excel data validation with examples and test suite.

2.22 July 19 2008 - Minor

    + Added JPEG support.

    + Added 29_process_jpg.t test for jpg dimension processing.

    + Turned off compatibility_mode() in Spreadsheet::WriteExcel::Big
      which was on by accident.

    + Added "Warning about Office Service Pack 3" section to the
      docs to explain Excel warnings with duplicate data.

    + Expanded "Dates and Time in Excel" section of the docs.

    + Added isa() to _process_images() to allow subclassing.
      Reported by David Worenklein.

2.21 March 9 2008 - Major

    ! Fixed bug where UTF-8 strings in formulas weren't handled.
      Thanks Sergey Zhuravlev.

    ! Fixed collapse outlines compatibility with Gnumeric
      Reported by Barrie Slaymaker.

    + Added example.

    + Added document section about rewriting Excel files.

    + Minor security fix to Format to avoid eval and
      additional fix for RT 24218.
      Thanks to Bram.

    + Added increased compatibility with third party
      Excel reading applications such as POI.

    + Added optional compatibility_mode() to fix problems
      that can occur with Office SP3.

    + Fixed compatibility problem with Google Docs.

    + Added set_start_page() method for setting the start page
      number when printing.

2.20 October 6 2007 - Major

    + Added autofilter() and filter_column() method and example.

    + Added embed_chart() method to allow extracted chart
      templates to be embedded in a worksheet.
      Added and examples.

    + Added the insert_image() method and proper Excel 97
      style image handling for PNG and BMP.
      Images now work with Gnumeric and OpenOffice.
      insert_bitmap() is now deprecated.

    ! Made pane split optional when calling freeze_panes().
      Also renamed thaw_panes() as split_panes(). The old
      method name is still available, but deprecated.

    ! Renamed write_unicode() and write_unicode_le() methods
      to the more explicit write_utf16be_string() and
      write_utf16le_string(). The old method names are
      still available, but deprecated.

2.19 June 14 2007 - Major

    + Beta testing only. Not released to CPAN.

2.18 January 18 2007 - Minor

    ! Correct invalid user set_column() calls to prevent
      crashes after Excel patch KB918419 is applied.
      Thanks to Sharron McKenzie for debugging.

    ! Fixed bug when writing comments longer than 8219 bytes.
      Reported by jscaglione.

    ! Fixed bug when using copy() with merged formats.
      Reported by jscaglione.

    ! Fixed bug where $@ was clobbered during garbage collection.
      Reported by afoxson.

    ! Removed all non-ascii characters from main docs to
      avoid problems with troff and man.
      Reported by Ken Williams.

    + Added autoloading of OLE::Storage_Lite, when available,
      to create workbooks larger than 7MB. It is no longer
      required to explicitly use ::Big.

    + Added handling of Unicode sheet names in formulas
      as suggested by Zhur:

2.17 May 21 2006 - Minor

    + Added set_tab_color() method and example (

    + Add set_page_view() method for Mac Excel view style
      and better default worksheet dimensions.

    + Added simulated example.

    + Added simulated Autofit example (

    ! Fixed RT #17801, incorrect close value with filehandles.
      Thanks to Josie.

    ! Changed comment font to Excel's default of Tahoma 8.
      Reported by Stefano Maurri.

    ! Fixed bug that stopped Charts working in 2.16.

2.16 January 6 2006 - Major

    + Rewrote and reinstated the write_comment() method to take
      account of the changes in the Excel 97+ comment format.
      Currently conflicts with insert_bitmap(), see docs.

    + Added standard styles such as comma, percent and currency.

    ! Changed write_url() methods to allow numbers or formulas
      as well as strings as the optional text.
      Requested by many.

    + Documented use of encoding flag in add_worksheet() to allow
      handling of UTF-16 sheet names.

    + Added encoding flag to merge_range() method to allow
      handling of UTF-16 strings. Requested by many.
      Added example program.

    + Added hide_zero() worksheet method to allow hiding of zero
      values in cells.

    + Added print_across() worksheet method to allow changing of
      the default print direction.

    + Added right_to_left() worksheet method to allow changing of
      the default worksheet direction in eastern versions of Excel.

    + Documented the Worksheet hide() method.

    + Added and example programs.

    + Added tests for the internal methods used by write_comment().

2.15 September 18 2005 - Minor

    ! Changed OLE container stream name from "Book" to "Workbook"
      for compatibility with some third party apps.
      Thanks Wieland Pusch and Kevin McMahon.

    ! Fixed bug that caused all worksheets to be selected in
      OpenOfficeOrg causing strange linking of data between
      Worksheets. Thanks  M. Brodbelt. See

    ! Changed file creation from end of program to the start of
      program in order to avoid race conditions and extra file
      creation on VMS.

    + Added optional user supplied results for formulas as a
      workaround for uncalcuated values in some non-Excel apps.
      Added example of above.

2.14 May 9 2005 - Minor

    ! Fixed handling of Unicode font names.

2.13 April 20 2005 - Minor

    ! Made it a fatal error to use a merged format in a non-
      merged cell (and vice-versa). This is a temporary measure
      to prevent people from shooting themselves in the foot
      until the code can be refactored.

    + Add 01_merge_formats.t test for above.

    + Added date_time tests.

2.12 March 22 2005 - Minor

    + Added further Unicode support. The following methods now
      handle uft8 in perl 5.8:

    + Added example.

    + Added 01_add_worksheet.t test.

2.11 September 30 2004 - Minor

    - Removed undocumented date_time handling from write() to
      avoid potential false matches.

    + Added add_write_handler() method to allow users to add
      their own data handlers to write().

    + Added 4 write_handler examples.

2.10 September 23 2004 - Major

    + Added chart support via external templates.
      Added and add_chart_ext() method to Workbook object.
      Added /charts directory with examples and documentation

    + Added write_date_time() worksheet method for writing dates
      and times in Excel date format.
      Added example.

    + Added automatic Unicode handling via utf8 in perl 5.8 and
      later. Thanks Mark Fowler.
      Added several unicode_*.pl examples in different encodings.
      Thanks to Sean Burke for the sample encodings.

    + Added example in order to answer frequently
      asked question about writing an Excel file to a scalar.

2.04 August 18 2004 - Minor

    ! Fixed handling of Euro symbol in num_format() strings.

    ! Renamed the Excel 5 style merge() format to the more correct
      center_across(). Updated examples accordingly.

    ! Added bug warning about using merge formats outside of
      merged ranges.

    + Fixed handling of doubled double quotes in formula strings.
      Thanks to a tip from merlyn.

    + The 2.xx versions are now compatible with MS Access. Removed
      statements to the contrary.

2.03 July 4 2004 - Minor

    ! Fixed bug that prevented column outlines from displaying.
      Thanks to Marc Rosenthal.

    ! Enhanced add_worksheet() name checking to exclude case-
      insensitive duplicate names.
      Thanks to James Wilkinson.

    ! Internal fix to number of rows in several (unseen) places.

    + Added mod_perl 2 example program from Matisse Enzer. Thanks.

2.02 May 28 2004 - Minor

    + Fixed internal version numbers to keep happy.
      Thanks to David Dyck.

    + Minor changes to and the html docs.

2.01 May 27 2004 - Major

    This version is a MAJOR revision to Spreadsheet::WriteExcel. The
    format of the Excel file that it produces has been updated from
    Excel 5 to Excel 97. This allows support for long, 32k character
    strings and Unicode.


    Also note that this version can be 1.5 to 2 times slower than
    previous versions and the write_comment() method has been
    temporarily removed. These issues will be fixed in later releases.

    + Changed the default Excel format to Excel 97.

    + Added support for strings up to 32767 character.

    + Added support for Unicode strings.

    + Improved speed in relation to pre-release versions.
      However, it is still slower than the 1.xx versions.

    + Improved support.

    + Added more examples:,,,,

    + Changed the distro dir structure.

    - Temporarily removed write_comment() support since the Excel 5
      version isn't compatible with Excel 97+.

1.01 May 24 2004 - Minor

    ! Small non-bug fix to write_comment().

0.43 April 28 2004 - Minor

    ! Fixed longstanding bug where page setup features didn't
      show up in

    ! Fixed localised @_ bug when using threaded perls.
      Thanks Tamas Gulacsi and Stephan Loescher.

0.42 August 26 2003 - Minor

    ! Fixed bug when using IO::Sclalar object as a filehandle.
      Thanks to Kyle R. Burton and David Robins.

    ! Fixed minor formula parser bug.
      Thanks Michael Braig

    ! Fixed handling of column sizing for widths less than 1
      unit (again). Thanks to Rubio (again).

    ! Failed new() returns undef instead of croak()ing as per docs.

0.41 April 24 2003 - Minor

    + Added facility for adding outlines to worksheets. Added example. Thanks to Franco Venturi.

    + Moved write_comment() code into the core modules. It is now
      possible to write cell comments.

    + Added option to return a slice from the sheets() method.

    + Added link to latest Excel97 pre-release.

    ! Changed, once more, the handling of temp files to avoid several
      file closing bugs. Thanks to many.

    ! Fixed handling of column sizing for widths less than 1 unit.
      Thanks Rubio.

    ! Renamed addworksheet() and addformat() to add_worksheet()
      and add_format() for consistency with other method names.
      Older names are supported but deprecated.

0.40 December 21 2002 - Minor

    ! Fixed internal sheet indexing in formulas on some platforms.
      This caused multi-sheet workbooks with formulas to crash.
      Thanks Troy Daniels.

    ! Fixed non-lexical filehandles to prevent problems in
      multi-threaded environments.
      Thanks Ning Xie.

0.39 September 23 2002 - Minor

    + Added the set_codepage() workbook method. This is mainly to
      prevent a bug that caused Gnumeric to crash but it is also
      useful for people working with non ascii chars on the Macintosh.
      Thanks Jody Goldberg.

    ! Fixed the non-deletion of temporary files. Users of version
      0.38 should probably clean up their tmp dirs manually.
      Thanks Pierre Laplante.

    ! Changed default handling of set_fg_color and set_bg_color from
      what Excel expected to what everyone else expected. Setting the
      fill colour of a cell should now be more intuitive.

    + Replaced the merge_cells() method with the merge_range() method.
      This is mainly to prevent the Excel 97 crashing bug that occurs
      when merge_cells() is used correctly. It also provide a simpler
      interface to the merge feature. Updated merge example programs.

    ! Refactored the error raising mechanism for formulas. The source
      of errors should now be clearer.

    ! Minor internal fixes to

0.38 August 29 2002 - Minor

    + Added formula caching to speed up the writing of formulas.
      Thanks to Ron McKelvey.

    + Added handling of A:A column notation in formulas and
      applicable worksheet methods.

    + Changed handling of numbers with leading zeroes so that they
      can be treated as strings and the zeroes maintained.

    + Modified $workbook->close() to return the value of the system
      file close.

    + Made file size exceeded a die() error instead of a warning.

    + Added option to hide row with the set_row() method

    + Added more examples:,, and

    ! Fixed write_url() when handling relative links in the current
      directory. Thanks Bob Mackay Andre de Bruin

    ! Fixed handling of multiple AND()'s and OR()'s in formulas.

    ! Fixed bug when creating a very large number of files within a
      single program on Windows.

    ! Added warning about Excel97 crashing bug with merge_cells().

    ! Fixed handling of parentheses in Worksheet names.
      Thanks Jann Linder.

    ! Fixed minor bugs in Thanks Johann Hanne.

    ! Fixed File::Temp dependency in Makefile. Thanks to many.

0.37 April 29 2002 - Minor

    + Added set_tempdir() method to allow a user defined temp
      directory. This is mainly of use to IIS users.

    + Fixed default format behaviour for formats set via the set_row()
      and set_column() methods.

    + Extended the hide_gridlines() method to allow hiding of screen
      gridlines as well as print gridlines.

    + Added a workaround example for the 255 char

    + Added https match to url regex. Thanks The Tilghman.

0.36 April 9 2002 - Minor

    + Added user definable colour palette. Thanks Bill Young.

    + Added and examples.

0.35 March 18 2002 - Minor

    + Added internal and external hyperlinks. Thanks Ian Penman.

    + Added worksheet set_zoom() and set_print_scale().

    ! Changed default value of fit_to_pages() to allow printed output
      to be one page wide and as long as required.
      Thanks Michael Erickson.

    ! Changed handling of undefs in write() method. Thanks Hanc Pavel.

    ! Changed new() to return undef for file creation errors
      Thanks Felipe PĂ©rez Galiana.

    ! Added check for header/footer length. Thanks Peter Dintelmann.

    ! Added check for duplicate worksheet names. Thanks Keith Miller.

    - Removed spurious return() to fix bug in set_repeat_rows().
      Thanks Brian White.

    ! Added "use integer" when using shift << to avoid bug with
      Perl 5.6.0 on HP-UX. Thanks Markus Schmitz, VSarkiss.

    ! Fixed minor bug in Thanks Sven Passig.

0.34 October 23 2001 - Major

    + Added Spreadsheet::WriteExcel::Utility module with helper
      functions for row/col and dates.

    + Added write_row and write_col methods after many requests.

    + Added ability to insert bitmap images.

    + Added cell protection and formula hiding.

    + Added more examples.

0.33 July 30 2001 - Minor

    + Added (hopefully) easier mechanism to add format properties.

    + Added more page setup options: repeat rows and columns, hide
      gridlines, print area, fit to pages and page breaks.

    ! Added fix to protect print() from -l on the command line.
      Thanks Cedric Bouvier and Kyle Krom.

    + Added more examples.

0.32 May 17 2001 - Minor

    + Added panes option.

    + Added page setup options: paper type, orientation, headers
      footers, centering.

    + Added panes example.

0.31 April 12 2001 - Major

    ! Fixed several minor and major bugs in
      Thanks Shane Ashby and Borgar Olsen and Christian Kirsch.

    + Added external worksheet references to formulas.

    + Added A1 notation.

    + Added facility to new() to accept valid filehandles.
      Thanks Peter Dintelmann.

    + Added more examples. Thanks Tom O'Sullivan.

    ! Updated example. Thanks to Takanori Kawai.

0.30 Feb 26 2001 - Major

    + Added formulas.

    ! Fixed docs for write_url(). Thanks James Holmes.

    ! Fixed bug when using a numeric format string of zeros.
      Thanks Kenneth Stacey.

0.26 Feb 1 2001 - Minor

    ! Fixed bug when using a border with the default colour. This
      caused the cell format to become unchangeable from within Excel.
      Thanks Shenyu Zheng.

    ! Changed worksheet code to automatically fall back to storing
      data in memory if opening a tmp file fails.

0.25 Jan 19 2001 - Minor

    ! Changed distro file format back to Unix line endings. The
      accidental DOS format was causing install problems.

0.24 Jan 14 2001 - Minor

    + Added write_url method.

    + Added set_merge() alias for set_align('merge') method.

    + Added warnings about deprecated code when running under -w flag.

    ! Documentation changes.

0.23 Dec 10 2000 - Minor

    + Added customisable numeric formats.

    + Added set_row() method.

    + Added set_1904() method.

    + Added extra examples including contributions. Thanks to all.

    + Moved secondary modules to WriteExcel namespace to clean-up
      Spreadsheet namespace which is now shared with ParseExcel.

    ! Fixed class data bug. Thanks Cedric Bouvier.

    ! Fixed Excel crashing!! bug in STYLE. Thanks Rich Sorden.

    ! Tidied up internal storage of FONTs and XFs.

    + Renamed set_col_width() method to set_column().

    + Renamed set_format() method to set_num_format().

0.22 Oct 22 2000 - Major

    + Added and the facility for cell formatting.

0.21 Oct 1 2000 - Minor

    + Replaced direct access to worksheets array with a workbook
      method; worksheets().

    + Added set_selection() and set_col_width() worksheet methods.

    ! Replaced the missing thats, including the that that were
      in the icebox.

    + Added MS Access bug warning; thanks Harold Bamford.

0.20 Aug 27 2000 - Major

    + Added multiple worksheets and OLE wrapper. Now compatible with
      Star Office, Gnumeric and XESS.

0.11 Aug 25 2000 - Minor

    ! Changes to documentation. Explanation of how to use WriteExcel
      in CGI's. Thanks Daniel Gardner.

0.10 May 13 2000 - Minor

    ! Bug in close() and DESTROY sequence fixed. Thanks John Wren.

    ! Biff version number fixed. Thanks Aurthur@ais, and then unfixed.

    ! Shakey test and distro fixed. Thanks to many.

0.09 Feb 1 2000 - Minor

    ! Code for writing DIMENSIONS updated to account for bug when
      reading files with QuickView.

    + Renamed xl_write methods to write.

0.08 Jan 16 2000

    First CPAN release. Spreadsheet::WriteExcel - Write text and
    numbers to minimal Excel binary file.