The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

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

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});
            }
    
        }
    
    }

}

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.

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)

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

ACKNOWLEDGEMENTS

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

COPYRIGHT AND LICENSE

Copyright (C) 2008 by Dmitry Ovsyanko

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.