Excel-ValueReader-XLSX
view release on metacpan or search on metacpan
lib/Excel/ValueReader/XLSX/Backend/LibXML.pm view on Meta::CPAN
NODE:
while ($reader->read) {
next NODE if $reader->nodeType == XML_READER_TYPE_END_ELEMENT;
if ($reader->name eq 'sheet') {
my $name = $reader->getAttribute('name')
or die "sheet node without name";
$workbook_data{sheets}{$name} = $sheet_id++;
}
elsif ($reader->name eq 'workbookPr' and my $date_attr = $reader->getAttribute('date1904')) {
$workbook_data{base_year} = 1904 if $date_attr eq '1' or $date_attr eq 'true'; # this workbook uses the 1904 calendar
}
elsif ($reader->name eq 'workbookView' and my $active_attr = $reader->getAttribute('activeTab')) {
$workbook_data{active_sheet} = $active_attr + 1 if defined $active_attr;
}
}
return \%workbook_data;
}
lib/Excel/ValueReader/XLSX/Backend/Regex.pm view on Meta::CPAN
my %workbook_data;
# read from the workbook.xml zip member
my $workbook = $self->_zip_member_contents('xl/workbook.xml');
# extract sheet names
my @sheet_names = ($workbook =~ m[<sheet name="(.+?)"]g);
$workbook_data{sheets} = {map {$sheet_names[$_] => $_+1} 0 .. $#sheet_names};
# does this workbook use the 1904 calendar ?
my ($date1904) = $workbook =~ m[date1904="(.+?)"];
$workbook_data{base_year} = $date1904 && $date1904 =~ /^(1|true)$/ ? 1904 : 1900;
# active sheet
my ($active_tab) = $workbook =~ m[<workbookView[^>]+activeTab="(\d+)"];
$workbook_data{active_sheet} = $active_tab + 1 if defined $active_tab;
return \%workbook_data;
}
( run in 0.245 second using v1.01-cache-2.11-cpan-5dc5da66d9d )