---
name: "Spreadsheet::XLSX"
section: "3pm"
platform: "linux"
package: "libspreadsheet-xlsx-perl"
version: "0.18-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Spreadsheet::XLSX"
---

# Spreadsheet::XLSX(3pm)

Perl extension for reading MS Excel 2007 files.

## 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.
