File: XLS.pm

package info (click to toggle)
libdata-tablereader-perl 0.021-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 392 kB
  • sloc: perl: 2,340; makefile: 2; sh: 1
file content (73 lines) | stat: -rw-r--r-- 1,723 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package Data::TableReader::Decoder::XLS;
use Moo 2;
use Carp;
extends 'Data::TableReader::Decoder::Spreadsheet';

our @xls_probe_modules= ( [ 'Spreadsheet::ParseExcel', '0.66' ] );
our $default_xls_module;
sub default_xls_module {
	$default_xls_module ||=
		Data::TableReader::Decoder::_first_sufficient_module('XLS parser', \@xls_probe_modules);
}

# ABSTRACT: Access sheets/rows of a Microsoft Excel '97 workbook
our $VERSION = '0.021'; # VERSION


sub _build_workbook {
	my $self= shift;
	
	my $wbook;
	my $f= $self->file_handle;
	if (ref $f and ref($f)->can('worksheets')) {
		$wbook= $f;
	} else {
		$wbook= $self->default_xls_module->new->parse($f, $self->xls_formatter);
	}
	defined $wbook or croak "Can't parse file '".$self->file_name."'";
	return $wbook;
}

1;

__END__

=pod

=encoding UTF-8

=head1 NAME

Data::TableReader::Decoder::XLS - Access sheets/rows of a Microsoft Excel '97 workbook

=head1 VERSION

version 0.021

=head1 DESCRIPTION

See L<Data::TableReader::Decoder::Spreadsheet>.
This subclass simply parses the input using an instance of L<Spreadsheet::ParseExcel>.

=head1 CLASS METHODS

=head2 default_xls_module

Initializes C<@Data::TableReader::Decoder::XLS::default_xls_module> to the first
available module in the list of C<@Data::TableReader::Decoder::XLS::xls_probe_modules>
and returns the cached value every time afterward.

Those variables can be modified as needed, if you have other XLS modules available.

=head1 AUTHOR

Michael Conrad <mike@nrdvana.net>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2024 by Michael Conrad.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut