diff options
author | Jesse Luehrs <doy@tozt.net> | 2015-12-04 00:41:41 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2015-12-04 00:41:59 -0500 |
commit | 963983123e5166b3e8bead9ed8d7d6ac175c1cb1 (patch) | |
tree | 80e72c3e922078fbf0546e5f1a810a585e8c2ac9 /lib | |
parent | 95686bb1c95eb60c674055bd6477227357a022c9 (diff) | |
download | spreadsheet-parsexlsx-963983123e5166b3e8bead9ed8d7d6ac175c1cb1.tar.gz spreadsheet-parsexlsx-963983123e5166b3e8bead9ed8d7d6ac175c1cb1.zip |
use the same password api as Spreadsheet::ParseExcel
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Spreadsheet/ParseXLSX.pm | 48 |
1 files changed, 18 insertions, 30 deletions
diff --git a/lib/Spreadsheet/ParseXLSX.pm b/lib/Spreadsheet/ParseXLSX.pm index 4c446c9..d750e9b 100644 --- a/lib/Spreadsheet/ParseXLSX.pm +++ b/lib/Spreadsheet/ParseXLSX.pm @@ -33,24 +33,27 @@ This module is an adaptor for L<Spreadsheet::ParseExcel> that reads XLSX files. =cut -=method new +=method new(%opts) -Returns a new parser instance. Takes no parameters. +Returns a new parser instance. Takes a hash of parameters: + +=over 4 + +=item Password + +Password to use for decrypting encrypted files. + +=back =cut sub new { - my $self = bless {}, shift; - my ($param) = @_; + my $class = shift; + my (%args) = @_; + + my $self = bless {}, $class; + $self->{Password} = $args{Password} if defined $args{Password}; - if (ref($param) eq 'HASH') { - if (exists($param->{password})) { - $self->{password} = $param->{password}; - } - if (exists($param->{formatter})) { - $self->{formatter} = $param->{formatter}; - } - } return $self; } @@ -65,27 +68,12 @@ The C<$formatter> argument is an optional formatter class as described in L<Spre sub parse { my $self = shift; - my ($file, $param1, $param2) = @_; + my ($file, $formatter) = @_; - my $formatter; - my $password; + my $workbook = Spreadsheet::ParseExcel::Workbook->new; my $signature = ''; my $tempfile; - - if (ref($param1) eq 'HASH') { - $formatter = $param1->{formatter}; - $password = $param1->{password}; - } else { - $formatter = $param1; - $password = $param2; - } - - $formatter = $formatter || $self->{formatter}; - $password = $password || $self->{password}; - - my $workbook = Spreadsheet::ParseExcel::Workbook->new; - if (openhandle($file)) { if (ref($file) eq 'GLOB') { read($file, $signature, 2); @@ -106,7 +94,7 @@ sub parse { } if ($signature eq "\xd0\xcf") { - $tempfile = $file = Spreadsheet::ParseXLSX::decryptor->open($file, $password); + $tempfile = $file = Spreadsheet::ParseXLSX::decryptor->open($file, $self->{Password}); } eval { |