/usr/local/CPAN/Dockhand/Dockhand/Reader/Excel.pm


package Dockhand::Reader::Excel;
use strict;
use warnings;
use Perl6::Say;
use Moose;

extends 'Dockhand::Reader';

use Spreadsheet::ParseExcel;
use Exporter;

our @ISA = qw(Exporter);
our @EXPORT = qw(read_file);

sub read {
	my $filename = shift;
	return undef unless $filename;
	my $book = Spreadsheet::ParseExcel::Workbook->Parse($filename);
	my $worksheet = ${$book->{Worksheet}}[0];
	my @data = ();
	for ( my $r = $worksheet->{MinRow}; defined $worksheet->{MaxRow} && 
		$r <= $worksheet->{MaxRow}; $r++ ) {
		push @data, _get_row($worksheet, $r);
	}
	return \@data;
}


sub _get_row {
	my $worksheet = shift;
	my $r_index = shift;

	my @row = ();
	for ( my $c = $worksheet->{MinCol}; defined $worksheet->{MaxCol} && 
		$c <= $worksheet->{MaxCol}; $c++ ) {
		my $cell = $worksheet->{Cells}[$r_index][$c];
		push @row, $cell->Value if $cell;
	}
	return \@row;
}
1;