0.93 - 17 Mar 2025, H.Merijn Brand * Add ranges and cellranges 0.92 - 06 Jan 2025, H.Merijn Brand * Make strict_eol default to 1 for CSV when supported * Show detected EOL for CSV in xlscat when known * Add SECURITY.md * It's 2025 0.91 - 27 Aug 2024, H.Merijn Brand * Exclude OLE::Storage_Lite-0.21 * xlscat --head[=10], --tail[=10], --first=C * Make (re)defining ->get_active_sheet safer * Tested with perl-5.40 * xlscat --no-empty to skip empty columns too * Spreadsheet::ParseExcel::FmtDefault might not be available 0.90 - 13 Feb 2024, H.Merijn Brand * Consistent return value for parses ($type) on failure (issue#52) * New options for xlscat (--no-empty, --clip=N) * Support for hidden sheets 0.89 - 02 Jan 2024, H.Merijn Brand * Auto-use BOM in CSV *files* with xlscat script * Fix duplicate option letter (typo) (Erix) * It's 2024 0.88 - 07 Nov 2023, H.Merijn Brand * Guard $_ globbering from external bitrotted code * Use recommended and suggested versions based on known CVEs * Improve user feedback on failing xlsx2csv & xlscat * Fix static docs for groff-1.24 * Basic support for Excel::ValueReader::XLSX (issue#50) * Allow backend for parser option without version check 0.87 - 22 Feb 2023, H.Merijn Brand * Change default #! to /usr/bin/perl (Tinita) * Improve ->sheets (safer and docs) * Update to Spreadsheet::ReadGnumeric 0.2 (attributes and small fixes) 0.86 - 07 Feb 2023, H.Merijn Brand * Add Gnumeric support (Bob Rogers, THANKS!) - work in progress, use with care, feedback welcome 0.85 - 04 Jan 2023, H.Merijn Brand * Suggest the preferred parser if none found * It's 2022 * xlscat --box and improvements for -L * Add balloons to ss2tk buttons * Fix typo in help (Erix) * It's 2023 0.84 - 26 Feb 2021, H.Merijn Brand * It's 2021 * Alias pivot to transpose (issue#36) * Alias strip to trim (issue#36) * Check for consistent return values of parses () 0.83 - 21 Dec 2020, H.Merijn Brand * Require ParseODS 0.26 * Add ::parsers to get list of supported formats * Add --list to xlscat and xls2csv * Update xls2csv to be identical to xlsx2csv * ::parses ("") will return list of supported types * Move installables from examples/ to scripts/ * Tested on FreeBSD-12.2-RELEASE with all supported backends * Fix META issue for bugtracker 0.82 - 26 Sep 2020, H.Merijn Brand * Move pod tests to xt (and do not distribute) * Fix some links in the docs * Add ".xlsm" to known XLSX file extensions * Spreadsheet::ReadSXC has a new maintainer (Corion) - support file handles - suggest version 0.24 (0.22 causes fails) * First attempt in supporting Spreadsheet::ParseODS (alpha code) - version 0.25 should now pass the limited tests - thanks to Corion for making this happen! * It's 2020 * Fallback to Pod::Text if nroff not available in tools * Extended support for merged cells with merge option - Added $sheet->merged_from ("C2") * Add --no-nl[=x] to xlscat * xlscat: Align-right more numerics on -L (was only positive integers) * xlsx2csv -Z : generate a ZIP file with a CSV for every sheet * Doc fix (issue#33) 0.81 - 25 Aug 2019, H.Merijn Brand * It's 2019 * Allow -c + --sep in xlscat * Add --sep= to xls2csv for -A * Add xlsx2csv to distribution (xlsx2csv has -A) * Add -J s / --join str to xlsx2csv * Add cpanfile * Add explicit documentation about formatted vs unformatted * Improve ->new behavior * Auto-detect fallback for CSV now includes '|' for sep_char (PR#26) 0.80 - 31 Dec 2018, H.Merijn Brand * Raise Spreadsheet::ParseXLSX minimum version to 0.24 * Improve docs on attributes * Add attribute accessors 0.79 - 29 Aug 2018, H.Merijn Brand * Environmant control hardening * ReadData () docs (opening from scalar ref: issue#21) * Check for XLSX content on opening from plain scalar content * Fix typo in ss-dup-tk.pl (PRC, Branislav Zahradnik) * Allow source from command line option in xls2csv (PRC, Branislav Zahradnik) * Allow --in-sep=tab in xlscat/xlsgrep * Add --hash to xlscat/xlsgrep * Help and usage for examples/xls2csv (PR#23) 0.78 - 29 Jan 2018, H.Merijn Brand * Spreadsheet::ParseExcel supports the active flag as of version 0.61 * Fix typo in docs (SPROUT, RT#124214) 0.77 - 22 Jan 2018, H.Merijn Brand * Note possible name clashes with example/tool files * Clipping and stripping more efficient 0.76 - 01 Jan 2018, H.Merijn Brand * Allow streaming in xlscat * Add --dump to xlscat * Add error for opening ODS/SXC from reference * It's 2018 0.75 - 09 Nov 2017, H.Merijn Brand * Windows does not like an exec with arguments that have spaces (PR#15) Three fixes by Andrew Gregory ). Thanks! * Fix column clipping * Manually generate cells to delete when clipping * Skip cell deletion if they were never generated * File names cannot have \0 in newer perls 0.74 - 27 Aug 2017, H.Merijn Brand * Re-enable opening files with bad characters in the filename (issue#14) 0.73 - 30 Jul 2017, H.Merijn Brand * Spreadsheet::XLSX::Reader::LibXML support completely dropped * New options for ss2tk (font specs and SS labels) * Safer xls2csv option parsing/passing * Pass unknown command-line options to the parser * Fix ReadData ("a,b,c\n1,2,3\n", parser => "csv") * Drop 5.8.0 support. 5.8.1 is now minimum 0.72 - 25 May 2017, H.Merijn Brand * get_active_sheet is only available as of Spreadsheet::ParseExcel 0.61 * Support password protected spreadsheets (implementation just for Excel) * Do not warn on undefined labels (xlscat) 0.71 - 13 May 2017, H.Merijn Brand * Use -w as intended * Add option pivot * No trailing spaces on xlscat -L * Lexicalize code snippet (issue#12) * Add attr method * Remove special chars from worksheet name component (Windows, PR#13) * Add refresh to ss2tk / csv2tk * Add shortcut for UTF-8 output to xlscat * Upgrade recommended modules to required for cpancover 0.70 - 02 Mar 2017, H.Merijn Brand * Add label functionality to ::Sheet * Add ->column and ->cellcolumn for ::Sheet * Add col2label sub/method * Sanitize xls2csv export filenames * Fix sorting in xlscat for un-aligned columns * It's 2017 * Be overly verbose about maxrow and maxcol being 1-based (RT#120476) 0.69 - 02 Dec 2016, H.Merijn Brand * Several OO fixes, more tests, more docs 0.68 - 29 Nov 2016, H.Merijn Brand * List non-core modules/version used on very verbose in xlscat * Option to export all sheets in a spreadsheet to CSV (UTF-8 only) * Add OO interface * Feature: add new spreadsheets to existing book (even of different types) 0.67 - 17 Jun 2016, H.Merijn Brand * CPANTESTERS showed that some versions really messed op numeric/percentage 0.66 - 16 Jun 2016, H.Merijn Brand * Remove Spreadsheet::XLSX::Reader::LibXML test files from distribution * Allow old versions of Spreadsheet::ParseXLSX to "fail" on percentage tests 0.65 - 15 Jun 2016, H.Merijn Brand * Test with perl-5.24.0 * Show parser-version used under debug * No more Spreadsheet::XLSX::Reader::LibXML * Cells will inherit hidden state from hidden rows and columns * Require 5.8.0 as 5.6.x does not include required Encode 0.64 - 22 Apr 2016, H.Merijn Brand * It's 2016 * Allow inconsistent Spreadsheet::XLSX releases on Debian (tests) * Decode utf-16be entries in Excel when appropriate * Two examples in xlscat 0.63 - 10 Oct 2015, H.Merijn Brand * Guard against negative MinRow in XLSX * Documentation updated * Support Spreadsheet::XLSX::Reader::LibXML disabled on author request * Fix warning in utilities * Check minimum parser version for pre-selected parser 0.62 - 16 Aug 2015, H.Merijn Brand * Fix documentation structure * Test all supported parsers (not just the preferred one) * Basic support for Spreadsheet::XLSX::Reader::LibXML (work in progress) * Copy example file if link fails (Alan Berndt) * Add a contributing guide 0.61 - 13 Jun 2015, H.Merijn Brand * Discourage Spreadsheet::XLSX * A space is not an empty field in XLS * Strip the correct selection (RT#105197) 0.60 - 30 Mar 2015, H.Merijn Brand * No merged cell support in Spreadsheet::XLSX 0.59 - 26 Mar 2015, H.Merijn Brand * Minimal support (+ docs) for merged cells * Make parser errors report at one level up * Don't select non-existing columns in xlscat 0.58 - 11 Feb 2015, H.Merijn Brand * Remove perl recommendation from META as it breaks cpan clients * Move sort instruction to correct place in xlscat's help 0.57 - 08 Feb 2015, H.Merijn Brand * Moved project to github * Add --sort to xlscat * Clip before conversion * Removed an unneeded localizing of $/ (related to p5 RT#123218) 0.56 - 05 Jan 2015, H.Merijn Brand * printf does not play nice with encoding (related to RT#98436) * default output UTF-8 if whole line is UTF-8 0.55 - 01 Jan 2015, H.Merijn Brand * Mention Spreadsheet::CSV in documentation * Add ssdiff to examples * Amend xlscat -n to also number in HTML * Updated copyright to 2015 0.54 - 30 Jan 2014, H.Merijn Brand * Optional features required versions now builtin 0.53 - 29 Jan 2014, H.Merijn Brand * Updated copyright to 2014 * Prefer Data::Peek over Data::Dumper * Support (and prefer) Spreadsheet::ParseXLSX for .xlsx 0.52 - 05 Dec 2013, H.Merijn Brand * Store CSV parse error - if any - in $ss->[0]{error} 0.51 - 30 Oct 2013, H.Merijn Brand * Link xlsgrep during install 0.50 - 24 Oct 2013, H.Merijn Brand * Added xlsgrep to examples * Allow -C B,D for xlscat * More prominent reference to xlscat in docs 0.49 - 11 May 2013, H.Merijn Brand * /dev/null cannot be used for tests on Windows 0.48 - 14 Mar 2013, H.Merijn Brand * Improve documentation consistency (RT#80409) * Updated copyright to 2013 * Force old(er) tar format (ustar) - assumes GNU tar on release box * Fix yml/json optional_features * Install utilities from example by default * Several minor changes (for maint) 0.47 - 30 Jun 2012, H.Merijn Brand * Note that empty sheets are skipped when clip is true (RT#75277) * Allow undef as valid value for the options (Max Maischein) * Don't generate warnings when stripping whitespace and only generating one of cells or rc. (Max Maschein) * Fix test warning under perl-5.17.x 0.46 - 14 Feb 2012, H.Merijn Brand * Updated copyright to 2012 * Support passing attributes to the underlying parser * Do not strip fields in sheets with no cells at all (RT#74976) 0.45 - 07 Sep 2011, H.Merijn Brand * NAME / DISTNAME in Makefile.PL 0.44 - 07 Sep 2011, H.Merijn Brand * More cross-checks for META data 0.43 - 02 Aug 2011, H.Merijn Brand * Changed name in META.yml (RT#69574) 0.42 - 01 Jun 2011, H.Merijn Brand * Add --html output option to xlscat * Force CSV parser when in-sep is given * Prefer Data::Peek over Data::Dumper if available 0.41 - 06 Oct 2010, H.Merijn Brand * Spell-check * Fixed requiring optional modules (RT#61928 - Roderick Schupp) 0.40 - 31 Mar 2010, H.Merijn Brand * Default option for clip fixed (RT#56151 - Alan James) 0.39 - 16 Mar 2010, H.Merijn Brand * Doc fix (RT#54507, Patrick Cronin) * Upped Copyright notices to 2010 * Drop YAML version to 1.0 0.38 - 15 Dec 2009, H.Merijn Brand * Add row () and cellrow () * Updated META.yml to meet most recent specs (optional_features = map) 0.37 - 09 Nov 2009, H.Merijn Brand * IO streams improvements * MANIFEST fix 0.36 - 06 Nov 2009, H.Merijn Brand * Add strip option * Spreadsheet::XLSX 0.12 still does not support attributes * Require Text::CSV_XS-0.69 for CSV for auto-detection of \r * New attribute "parser" to force format * Allow CSV streams * Allow SC streams * Allow XLS streams 0.35 - 03 Jun 2009, H.Merijn Brand * Add Test::NoWarnings, which is not run in AUTOMATED_TESTING * Switched to Test::More using tests_done () * Text::CSV_XS requires 0.43 or up, as we use ->eof () still prefer a really new release, like 0.65, which is Test::NoWarnings safe * Spreadsheet::XLSX 0.10 still does not support attributes * Added -n to xlscat * XLSX tests skip on feature, not on version 0.34 - 27 Jan 2009, H.Merijn Brand * Spreadsheet::XLSX 0.09 still does not support attributes still think it is better to follow closely. 0.09 is much better than 0.08 0.33 - 23 Jan 2009, H.Merijn Brand * A few Perl::Critic inspired changes * Modified tests to prevent rounding errors (we were not checking for that) * Added examples/ss-dups-tk.pl 0.32 - 06 Jan 2009, H.Merijn Brand * Add basic support for M$ Excel 2007 using Spreadsheet::XLSX * Test suite reports the parsers it found 0.31 - 04 Jan 2009, H.Merijn Brand * Upped Copyright notices to 2009 * Detection of percentage type * Even more reliable detection of Date types 0.30 - 22 Dec 2008, H.Merijn Brand * Wrong e-mail in META.yml * CSV files from a Mac, with \r as eol, would not parse 0.29 - 19 Oct 2008, H.Merijn Brand * Make Read safer for files that do not match extension, like HTML in foo.xls * YAML declared 1.4 (META.yml) instead of 1.1 (YAML) * Bring Makefile.PL in sync with META.yml * Recommend Text-CSV-0.56 0.28 - 04 Sep 2008, H.Merijn Brand * More tests on date formats * Declare Spreadsheet::ParseExcel::FmtDefault in META.yml * Add 'size' from Excel font size * Update docs about Excel quirks and CPAN links * Reference to public git repo * Some typo's 0.27 - 31 Aug 2008, H.Merijn Brand * Fixed META.yml (the specs are inconsistent) * Added --dtfmt to xlscat 0.26 - 29 Aug 2008, H.Merijn Brand * Added examples/xls2csv * Upped copyright to 2008 in examples * Don't ask to install examples under automated testing * die => croak * Added tgzdist target * Added encoding options to examples/xlscat * Added date-type checks for SS:PE > 0.32 0.25 - 02 Jan 2008, H.Merijn Brand * Spreadsheet-Read now under git * Upped copyrights to 2008 * Added all prereq's to Makefile.PL, even core mods * Tested under perl-5.10.0 * Text::CSV as of 1.00 is OK 0.24 - 05 Oct 2007, H.Merijn Brand * -? and --help in utils moved to Getopt::Long * Adjusted copyright notice in utils * removed prototypes in utils * next is illegal in do {} while (); (Johan Vromans) only happens with old Text::CSV_XS 0.23 - 21 Jun 2007, H.Merijn Brand * Use IO::Scalar instead of File::Temp when installed Thanks to David Cantrell for making a OpenBSD test box available! * use binmode () when opening files * Also use 3-arg open in test files * die if test files cannot be opene'ed 0.22 - 18 Jun 2007, H.Merijn Brand * 0.21 should already support Text::CSV_PP 1.05 Tested Text::CSV_PP 1.05 on bleadperl. * Better detection of (not) installed modules * Module requires perl 5.6.x 0.21 - 18 Jun 2007, H.Merijn Brand * Text::CSV_XS uses keep_meta_info instead of get_flags * Removed always_quote from xlscat's CSV output 0.20 - 31 May 2007, H.Merijn Brand * perlcritic OK * CSV parsing now uses getline (), and auto-detects eol Assumes first line does not contain embedded eol. This implies that parsing CSV with embedded eol sequences is now safe. * As I now also maintain Text::CSV_XS, I changed the references * Changed TODO's from Text::CSV to Text::CSV_PP (::CSV is dated 1997) 0.19 - 04 May 2007, H.Merijn Brand * Could not retreive '0' fields from OpenOffice (Jim Kelly) 0.18 - 27 Apr 2007, H.Merijn Brand * use strict in Makefile.PL * Added test_cover make target * Added "ods" for OpenOffice conversions * Added color tests for ods (but SR::RS doesn't support that yet) * Switched from \d to 0-9 in regexp * Added more test files and tests (increase coverage) 0.17 - 04 Jul 2006, H.Merijn Brand * xlscat new option: --ansii to (try to) use the ansi colors for fields * Fixed a color attribute off-by-one error * Added test cases (not yet complete) * Added bold and underline 0.16 - 04 Jul 2006, H.Merijn Brand * xlscat new option: --in-sep-char to force-define input sep-char for CSV * More debug lines * Parser name info in $ref->[0] * SquirrelCalc now reports Spreadsheet::Read and its version for parser info * Most of the attributes for Excel now implemented. Tested, but no test case 0.15 - 21 Jun 2006, H.Merijn Brand * Small doc change from AnnoCPAN * Sheets with undefined labels might cause havoc * Clip now skips empty xls sheets (TODO: sxc) * xlscat clips by default * xlscat new options -d and --noclip * xlscat usage () from -?/--help to STDOUT from fault to STDERR 0.14 - 20 Jan 2006, H.Merijn Brand * maxrow and maxcol were swapped in csv sheets * promoted internal debug flag to option * small doc changes 0.13 - 04 Nov 2005, H.Merijn Brand * Control attrib 'cells' was misinterpreted * New option: clip, default is true if {cell} is selected, false otherwise Removes trailing lines and columns in each sheet that have no visible data * new test t/11_call.t for checking options. Not complete yet * Added test_cover target to Makefile.PL 0.12 - 31 Oct 2005, H.Merijn Brand * Added ss2tk to examples 0.11 - 26 Oct 2005, H.Merijn Brand * Allow ods (OpenOffice 2.0) for sxc * include real ods test files and new test * Check if sc.version is undef, not 0 0.10 - 19 Sep 2005, H.Merijn Brand * More test coverage * cr2cell () returns "" for illegal col/row values * cell2cr () returns (0, 0) for illegal cell values * rows () tests even better for valid reference pointer * Renamed the test files 0.09 - 18 Sep 2005, H.Merijn Brand * Added Test::Pod * Added Test::Pod::Coverage * Spreadsheet::ReadSXC 0.20 now required (too many tests fail on 0.12) * Small changes to the docs * More secure handling of false values * Mention a bug in Spreadsheet::ParseExcel 0.08 - 22 Aug 2005, H.Merijn Brand * Slightly changed the Synopsis 0.07 - 06 Jul 2005, H.Merijn Brand * Added function rows () * Added function parses () * Made all modules optional * Prepared for Spreadsheet::Perl * Doc updates 0.06 - 22 Jun 2005, H.Merijn Brand * Repaired error in label names in metadata for SXC 0.05 - 17 Jun 2005, H.Merijn Brand * Spreadsheet::ReadSXC >= 0.20 supports sheet order * Spreadsheet::ReadSXC has new data structure (we still support the old) * Added "version" to the meta data for parser version * More tests 0.04 - 14 Jun 2005, H.Merijn Brand * Changed TODO * Added options "rc", and "cell" * Added CSV * Added CSV options "sep", and "quote" * Support xls from content * Added basic support for SquirrelCalc format * Updated pod * xlscat -R option for row selection was a one-off * xlscat now supports selecting fields with -F 0.03 - 19 May 2005, H.Merijn Brand * Expanded xlscat to support -i for index * Optionally install xlscat 0.02 - 19 May 2005, H.Merijn Brand * Typoes in the doc * Small change in organization so it actually installs 0.01 - 12 May 2005, H.Merijn Brand * Initial CPAN version. A lot can still change