From 3a5411859af52d317402a1aecc6d2bfaf9362896 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 10 May 2013 12:19:20 -0500 Subject: start parsing some workbook stuff --- lib/Spreadsheet/ParseXLSX.pm | 46 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'lib/Spreadsheet/ParseXLSX.pm') diff --git a/lib/Spreadsheet/ParseXLSX.pm b/lib/Spreadsheet/ParseXLSX.pm index c914276..3022988 100644 --- a/lib/Spreadsheet/ParseXLSX.pm +++ b/lib/Spreadsheet/ParseXLSX.pm @@ -36,6 +36,52 @@ sub _parse_workbook { my ($zip) = @_; my $files = $self->_extract_files($zip); + + my $workbook = Spreadsheet::ParseExcel::Workbook->new; + + my @sheets = map { + my $sheet = Spreadsheet::ParseExcel::Worksheet->new( + Name => $_->att('name'), + _Book => $workbook, + _SheetNo => $_->att('sheetId') - 1, + ); + $self->_parse_sheet($sheet, $files); + $sheet + } $files->{workbook}->find_nodes('//sheets/sheet'); + + my ($version) = $files->{workbook}->find_nodes('//fileVersion'); + my ($properties) = $files->{workbook}->find_nodes('//workbookPr'); + + $workbook->{Version} = join('-', + map { $version->att($_) } qw(appName lowestEdited) + ); + $workbook->{Flag1904} = $properties->att('date1904') ? 1 : 0; + + $workbook->{FmtClass} = Spreadsheet::ParseExcel::FmtDefault->new; # XXX + + $workbook->{Worksheet} = \@sheets; + $workbook->{SheetCount} = scalar(@sheets); + + # $workbook->{Format} = ...; + # $workbook->{FormatStr} = ...; + # $workbook->{Font} = ...; + + # $workbook->{PkgStr} = ...; + + # $workbook->{StandardWidth} = ...; + + # $workbook->{Author} = ...; + + # $workbook->{PrintArea} = ...; + # $workbook->{PrintTitle} = ...; + + return $workbook; +} + +sub _parse_sheet { + my $self = shift; + my ($sheet, $files) = @_; + # ... } -- cgit v1.2.3-54-g00ecf