#!/usr/bin/perl use strict; use warnings; use OpenOffice::OODoc; use Data::Dumper; my $file = "export.ods"; my $doc = odfDocument(file => $file) or die $!; my @alldata; for my $ws (0..255) { last unless defined $doc->getCellValue($ws, 0, 0); for my $row (0..1048575) { last unless defined $doc->getCellValue($ws, $row, 0);; for my $cell (0..1023) { last unless defined $doc->getCellValue($ws, $row, $cell); $alldata[$ws]->[$row]->[$cell] = $doc->getCellValue($ws, $row, $cell); } } } print Dumper \@alldata; print "rows: " . @{$alldata[0]} . "\ncols: " . @{$alldata[0]->[0]};