logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Spreadsheet::XLSX - Perl extension for reading MS Excel 2007 files.

Acknowledgements

               Thanks to TrackVia Inc. (http://www.trackvia.com) for paying for Rob Polocz working time.

Author

       Dmitry Ovsyanko, <do@eludia.ru>, http://eludia.ru/wiki/

       Patches by:

               Steve Simms
               Joerg Meltzer
               Loreyna Yeung
               Rob Polocz
               Gregor Herrmann
               H.Merijn Brand
               endacoe
               Pat Mariani
               Sergey Pushkin

Description

       This module is a (quick and dirty) emulation of Spreadsheet::ParseExcel for Excel 2007 (.xlsx) file
       format.  It supports styles and many of Excel's quirks, but not all.  It populates the classes from
       Spreadsheet::ParseExcel for interoperability; including Workbook, Worksheet, and Cell.

Name

       Spreadsheet::XLSX - Perl extension for reading MS Excel 2007 files.

See Also

       Spreadsheet::ParseXLSX
         This module (Spradsheet::XLSX) has some serious issues with the way it uses regexs for parsing the XML.
         I would strongly encourage switching to Spreadsheet::ParseXLSX which takes a more reliable approach.

       Text::CSV_XS, Text::CSV_PP
       Spreadsheet::ParseExcel
       Spreadsheet::ReadSXC
       Spreadsheet::BasicRead
         for xlscat likewise functionality (Excel only)

       Spreadsheet::ConvertAA
         for an alternative set of cell2cr() / cr2cell() pair

       Spreadsheet::Perl
         offers  a Pure Perl implementation of a spreadsheet engine. Users that want this format to be supported
         in Spreadsheet::Read are hereby motivated to offer patches. It's not high on my todo-list.

       xls2csv
         <https://metacpan.org/release/KEN/xls2csv-1.07> offers an  alternative  for  my  "xlscat  -c",  in  the
         xls2csv  tool,  but  this  tool  focusses  on  character encoding transparency, and requires some other
         modules.

       Spreadsheet::Read
         read the data from a spreadsheet (interface module)

Synopsis

           use Text::Iconv;
           my $converter = Text::Iconv->new("utf-8", "windows-1251");

           # Text::Iconv is not really required.
           # This can be any object with the convert method. Or nothing.

           use Spreadsheet::XLSX;

           my $excel = Spreadsheet::XLSX->new('test.xlsx', $converter);

           foreach my $sheet (@{$excel->{Worksheet}}) {

               printf("Sheet: %s\n", $sheet->{Name});

               $sheet->{MaxRow} ||= $sheet->{MinRow};

               foreach my $row ($sheet->{MinRow} .. $sheet->{MaxRow}) {

                   $sheet->{MaxCol} ||= $sheet->{MinCol};

                   foreach my $col ($sheet->{MinCol} ..  $sheet->{MaxCol}) {

                       my $cell = $sheet->{Cells}[$row][$col];

                       if ($cell) {
                           printf("( %s , %s ) => %s\n", $row, $col, $cell->{Val});
                       }

                   }

               }

           }

See Also