summaryrefslogtreecommitdiffstats
path: root/lib/Spreadsheet/ParseXLSX.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Spreadsheet/ParseXLSX.pm')
-rw-r--r--lib/Spreadsheet/ParseXLSX.pm15
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/Spreadsheet/ParseXLSX.pm b/lib/Spreadsheet/ParseXLSX.pm
index 72c8793..99d3c33 100644
--- a/lib/Spreadsheet/ParseXLSX.pm
+++ b/lib/Spreadsheet/ParseXLSX.pm
@@ -33,17 +33,18 @@ sub new {
bless {}, shift;
}
-=method parse($file)
+=method parse($file, $formatter)
Parses an XLSX file. Parsing errors throw an exception. C<$file> can be either
a filename or an open filehandle. Returns a
L<Spreadsheet::ParseExcel::Workbook> instance containing the parsed data.
+The C<$formatter> argument is an optional formatter class as described in L<Spreadsheet::ParseExcel>.
=cut
sub parse {
my $self = shift;
- my ($file) = @_;
+ my ($file, $formatter) = @_;
my $zip = Archive::Zip->new;
my $workbook = Spreadsheet::ParseExcel::Workbook->new;
@@ -62,12 +63,12 @@ sub parse {
die "Argument to 'new' must be a filename or open filehandle";
}
- return $self->_parse_workbook($zip, $workbook);
+ return $self->_parse_workbook($zip, $workbook, $formatter);
}
sub _parse_workbook {
my $self = shift;
- my ($zip, $workbook) = @_;
+ my ($zip, $workbook, $formatter) = @_;
my $files = $self->_extract_files($zip);
@@ -81,7 +82,7 @@ sub _parse_workbook {
$workbook->{Flag1904} = $properties->att('date1904') ? 1 : 0;
- $workbook->{FmtClass} = Spreadsheet::ParseExcel::FmtDefault->new; # XXX
+ $workbook->{FmtClass} = $formatter || Spreadsheet::ParseExcel::FmtDefault->new;
my $themes = $self->_parse_themes((values %{ $files->{themes} })[0]); # XXX
@@ -573,9 +574,9 @@ sub _parse_styles {
Font => $font[$_->att('fontId')],
FmtIdx => 0+$_->att('numFmtId'),
- Lock => $protection
+ Lock => $protection && defined $protection->att('locked')
? $protection->att('locked')
- : 0,
+ : 1,
Hidden => $protection
? $protection->att('hidden')
: 0,